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}