Java datetime

From wikinotes

now

import java.time.LocalDateTime;
import java.time.ZoneOffset;

LocalDateTime dt = LocalDateTime.now();                     // current datetime (localtz)
LocalDateTime dt_utc = LocalDateTime.now(ZoneOffset.UTC);   // current datetime (utc)
Instant instant = Instant.now();                            // current datetime (utc)

timezones

It is always considered a best practice to work with datetimes in UTC until they are presented to the user (where they are converted to local time).

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

Instant dt = Instant.now();                // current datetime in UTC
ZoneId tz = ZoneId.of("America/Toronto");
ZonedDateTime localized_dt = dt.atZone(tz);
>>> "2019-02-09T16:09:05.764200-05:00[America/Toronto]"

date formatting

This is similar to python's strftime.

import java.time.LocalDateTime;
import java.time.DateTimeFormatter;

DateTimeFormatter dt_formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy HH:mm:ss");
String dt_as_str = dt_utc.format(dt_formatter);
>>> "09-22-1999 03:01:23"