datetime
This library implements a DateTime object that contains all date and time fields as well as functions to manipulate the data. In addition, the library itself contains the following functions:
now()
Returns the DateTime object that represents the current date-time from the system clock in the default time-zone.
Example
ds.datetime.now()
{ "zoneOffset": "-07:00", "year": 2022, "nano": 478000000, "minute": 9, "second": 34, "hour": 9, "month": 11, "zoneId": "America/Phoenix", "day": 18 }
fromObject(object datetime)
Creates a new DateTime object from values provided in the input object. The input object must contain at least one of the day
, month
, year
, hour
, minute
, second
, nano
, zoneId
or zoneOffset
keys.
Example
ds.datetime.fromObject({"year":2020})
{ "zoneOffset": "Z", "year": 2020, "nano": 0, "minute": 0, "second": 0, "hour": 0, "month": 1, "zoneId": "Z", "day": 1 }
parse(string datetime, string inputformat = "iso")
Creates a new DateTime object from a string representation of date-time in a given format. The optional inputformat
string may be one of the timestamp
, epoch
, iso
or contain a pattern accepted by the java.time.format.DateTimeFormatter.ofPattern()
method. If the input format is not specified, the datetime
parameter is expected to be in the java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME
format
Example
ds.datetime.parse("12/31/1990 10:10:10", "MM/dd/yyyy HH:mm:ss")
{ "zoneOffset": "-07:00", "year": 1990, "nano": 0, "minute": 10, "second": 10, "hour": 10, "month": 12, "zoneId": "America/Phoenix", "day": 31 }
ds.datetime.parse("1577836800", "timestamp")
{ "zoneOffset": "Z", "year": 2020, "nano": 0, "minute": 0, "second": 0, "hour": 0, "month": 1, "zoneId": "Z", "day": 1 }
ds.datetime.parse("2011-12-03T10:15:30+01:00")
{ "zoneOffset": "+01:00", "year": 2011, "nano": 0, "minute": 15, "second": 30, "hour": 10, "month": 12, "zoneId": "+01:00", "day": 3 }
DateTime object
The DateTime object contains following functions:
asMilliseconds()
Returns the date-time value as the number of milliseconds from the epoch of 1970-01-01T00:00:00Z.
Example
ds.datetime.now().asMilliseconds()
"1668789455520"
format(string pattern)
Returns the date-time value as a string formatted using the provided pattern accepted by the java.time.format.DateTimeFormatter.ofPattern()
method.
Example
ds.datetime.now().format("MM/dd/yyyy HH:mm:ss")
"11/18/2022 10:23:12"
toISO()
Returns the date-time value as a string formatted using the ISO-8601 extended offset date-time format.
Example
ds.datetime.now().toISO()
"2022-11-18T11:44:11.571-07:00"
toTimeZone(string zoneId)
Returns a copy of this DateTime object with a different time-zone, retaining the instant.
Example
ds.datetime.parse("2019-07-04T21:00:00Z", "yyyy-MM-dd'T'HH:mm:ssXXX").toTimeZone("America/Los_Angeles")
{ "zoneOffset": "-07:00", "year": 2019, "nano": 0, "minute": 0, "second": 0, "hour": 14, "month": 7, "zoneId": "America/Los_Angeles", "day": 4 }
plus(string period)
Example
ds.datetime.parse("2019-07-22", "yyyy-MM-dd").plus("P5D")
{ "zoneOffset": "-07:00", "year": 2019, "nano": 0, "minute": 0, "second": 0, "hour": 0, "month": 7, "zoneId": "America/Phoenix", "day": 27 }
daysBetween(DateTime otherDateTime)
Returns the number of days between this DateTime object and the object provided as a parameter
Example
local myDate = ds.datetime.parse("01/01/1990 10:10:10", "MM/dd/yyyy HH:mm:ss"); local otherDate = ds.datetime.parse("12/31/1990 10:10:10", "MM/dd/yyyy HH:mm:ss"); myDate.daysBetween(otherDate)"
364
compare(DateTime otherDateTime)
Returns the value 0 if the argument DateTime is equal to this DateTime; a value less than 0 if this DateTime is before the DateTime argument; and a value greater than 0 if this DateTime is after the DateTime argument.
Example
local myDate = ds.datetime.parse("01/01/1990 10:10:10", "MM/dd/yyyy HH:mm:ss"); local otherDate = ds.datetime.parse("12/31/1990 10:10:10", "MM/dd/yyyy HH:mm:ss"); myDate.compare(otherDate)"
-1