!DateShenanigans-v2.1.sk

Created by Veraid

Other available versions. Ordered by newest to oldest versions:

Just so you know, we don't know the file format for every file. If it's just a bunch of random characters, it's probably a .zip or .jar.

import:
  java.time.LocalDate
  java.time.format.DateTimeFormatter
  java.time.DayOfWeek
  org.apache.commons.lang.time.DurationFormatUtils
expression (1¦day of [the] week|2¦day|3¦month|4¦year|5¦real[ ]time|6¦time[ ]zone|7¦hour[s]|8¦minute[s]|9¦second[s]|10¦day of [the] week value|11¦day value|12¦month value) [(of|for|at) %-date%]:
  get:
    if expr-1 is set:
      set {_date} to expr-1
    else:
      set {_date} to now
    set {_date_format} to {_date} formatted as "yyyy/MM/dd/HH/mm/ss/z"
    set {_date::*} to {_date_format} split at "/"
    set {_year} to {_date::1} parsed as integer
    set {_month} to {_date::2} parsed as integer
    set {_day} to {_date::3} parsed as integer
    set {_hour} to {_date::4} parsed as integer
    set {_minute} to {_date::5} parsed as integer
    set {_second} to {_date::6} parsed as integer
    set {_zone} to {_date::7}
    if parse mark is 1 or 10:
      set {_date_format} to DateTimeFormatter.ofPattern("d/M/yyyy")
      set {_date} to LocalDate.parse("%{_day}%/%{_month}%/%{_year}%", {_date_format})
      set {_result} to {_date}.getDayOfWeek()
      parse mark is 1
      set {_date} to "%{_date}.getDayOfWeek()%"
      set {_date_first} to first character of {_date}
      set {_date_remain} to last (length of {_date} - 1) characters of {_date}
      set {_result} to "%{_date_first}%%{_date_remain} in lower case%"
    else if parse mark is 2 or 11:
      set {_result} to {_day}
      parse mark is 2
      if {_result} is 1, 21 or 31:
        set {_result} to "%{_result}%st"
      else if {_result} is 2 or 22:
        set {_result} to "%{_result}%nd"
      else if {_result} is 3 or 23:
        set {_result} to "%{_result}%rd"
      else:
        set {_result} to "%{_result}%th"
    else if parse mark is 3 or 12:
      set {_result} to {_month}
      parse mark is 3
      if {_result} is 1:
        set {_result} to "January"
      if {_result} is 2:
        set {_result} to "February"
      if {_result} is 3:
        set {_result} to "March"
      if {_result} is 4:
        set {_result} to "April"
      if {_result} is 5:
        set {_result} to "May"
      if {_result} is 6:
        set {_result} to "June"
      if {_result} is 7:
        set {_result} to "July"
      if {_result} is 8:
        set {_result} to "August"
      if {_result} is 9:
        set {_result} to "September"
      if {_result} is 10:
        set {_result} to "October"
      if {_result} is 11:
        set {_result} to "November"
      if {_result} is 12:
        set {_result} to "December"
    else if parse mark is 4:
      set {_result} to {_year}
    else if parse mark is 5:
      set {_result} to "%{_hour}%:%{_minute}%"
    else if parse mark is 6:
      set {_result} to {_zone}
    else if parse mark is 7:
      set {_result} to {_hour}
    else if parse mark is 8:
      set {_result} to {_minute}
    else if parse mark is 9:
      set {_result} to {_second}
    return {_result}
expression duration [format] of %date% [and %-date%]:
  get:
    set {_date_1} to expr-1
    if expr-2 is not set:
      set {_date_2} to now
    else:
      set {_date_2} to expr-2
    set {_seconds} to unix timestamp of {_date_1}
    remove unix timestamp of {_date_2} from {_seconds}
    set {_format} to DurationFormatUtils.formatDuration(({_seconds} * 1000) and "s,m,H,d")
    set {_format::*} to {_format} split at ","
    if {_format::1} is "0":
      set {_format::1} to ""
    else:
      set {_format::1} to "%{_format::1}%&rs"
    if {_format::2} is "0":
      set {_format::2} to ""
    else:
      if {_format::1} is "0":
        set {_format::2} to "%{_format::2}%m"
      else:
        set {_format::2} to "%{_format::2}%m "
    if {_format::3} is "0":
      set {_format::3} to ""
    else:
      if {_format::2} is "0":
        set {_format::3} to "%{_format::3}%h"
      else:
        set {_format::3} to "%{_format::3}%h "
    if {_format::4} is "0":
      set {_format::4} to ""
    else:
      if {_format::3} is "0":
        set {_format::4} to "%{_format::4}%d"
      else:
        set {_format::4} to "%{_format::4}%d "
    set {_result} to "%{_format::4}%%{_format::3}%%{_format::2}%%{_format::1}%"
    if {_seconds} is less than 1:
      if {_seconds} is greater than -1:
        set {_result} to "Now"
      else:
        replace all "-" with "" in {_result}
        set {_result} to "Completed %{_result}% ago"
    return {_result}