ESC
Type to search...
S
Soli Docs

DateTime

Date and time manipulation with a clean, object-oriented API.

The DateTime class provides a convenient way to work with dates and times. Create instances using static methods, then use instance methods to extract components or perform arithmetic.

Static Methods

DateTime.now()

Get the current local date and time.

Returns

DateTime - A DateTime instance representing the current local time
let now = DateTime.now
println(now.to_iso())  # "2024-01-15T10:30:00"
DateTime.utc()

Get the current UTC date and time.

Returns

DateTime - A DateTime instance representing the current UTC time
let utc = DateTime.utc
println(utc.to_iso())  # "2024-01-15T15:30:00Z"
DateTime.parse(string)

Parse a date/time string in ISO 8601 or RFC format.

Parameters

string : String - The date string to parse

Returns

DateTime - A DateTime instance
let dt = DateTime.parse("2024-01-15T10:30:00Z")
let date_only = DateTime.parse("2024-01-15")

Date Components

.year()

Get the year component (e.g., 2024).

Returns

Int - The year
.month()

Get the month component (1-12).

Returns

Int - The month (1 = January, 12 = December)
.day()

Get the day of month (1-31).

Returns

Int - The day of the month
.hour()

Get the hour component (0-23).

Returns

Int - The hour in 24-hour format
.minute()

Get the minute component (0-59).

Returns

Int - The minute
.second()

Get the second component (0-59).

Returns

Int - The second
.weekday()

Get the day of the week as a string.

Returns

String - The weekday name (e.g., "monday", "tuesday")
let dt = DateTime.parse("2024-01-15")
println(dt.weekday())  # "monday"

Formatting

.to_unix()

Get the Unix timestamp (seconds since epoch).

Returns

Int - Unix timestamp in seconds
let dt = DateTime.now
println(dt.to_unix())  # 1705315800
.to_iso()

Get the date/time as an ISO 8601 string.

Returns

String - ISO 8601 formatted string
let dt = DateTime.now
println(dt.to_iso())  # "2024-01-15T10:30:00"
.format(pattern)

Format the date/time using strftime pattern specifiers.

Parameters

pattern : String - strftime format pattern

Common Format Specifiers

%Y - Year (4 digits)
%m - Month (01-12)
%d - Day (01-31)
%H - Hour (00-23)
%M - Minute (00-59)
%S - Second (00-59)
%B - Month name
%A - Weekday name
let dt = DateTime.parse("2024-01-15T10:30:00")
dt.format("%Y-%m-%d %H:%M:%S")  # "2024-01-15 10:30:00"
dt.format("%B %d, %Y")           # "January 15, 2024"
dt.format("%A")                  # "Monday"

Arithmetic

.add_days(n)

Add days to the date. Use negative values to subtract.

Parameters

n : Int - Number of days to add

Returns

DateTime - A new DateTime instance
let today = DateTime.now
let tomorrow = today.add_days(1)
let yesterday = today.add_days(-1)
.add_hours(n)

Add hours to the date/time. Use negative values to subtract.

Parameters

n : Int - Number of hours to add

Returns

DateTime - A new DateTime instance
let now = DateTime.now
let in_two_hours = now.add_hours(2)
.add_weeks(n)

Add weeks to the date. Use negative values to subtract.

Parameters

n : Int - Number of weeks to add

Returns

DateTime - A new DateTime instance
let today = DateTime.now
let next_week = today.add_weeks(1)
.add_months(n)

Add months to the date. Use negative values to subtract.

Parameters

n : Int - Number of months to add

Returns

DateTime - A new DateTime instance
let today = DateTime.now
let next_month = today.add_months(1)
let last_quarter = today.add_months(-3)
.add_years(n)

Add years to the date. Use negative values to subtract.

Parameters

n : Int - Number of years to add

Returns

DateTime - A new DateTime instance
let today = DateTime.now
let next_year = today.add_years(1)

Complete Example

# Get current date/time
let now = DateTime.now
println("Current time: " + now.to_iso())

# Extract components
println("Year: " + now.year())
println("Month: " + now.month())
println("Day: " + now.day())
println("Weekday: " + now.weekday())

# Format output
println(now.format("%B %d, %Y at %H:%M"))

# Date arithmetic
let next_week = now.add_weeks(1)
let last_month = now.add_months(-1)

# Parse a date string
let birthday = DateTime.parse("1990-06-15")
println("Birthday was on a " + birthday.weekday())