LocalDateTime.dateTime constructor

LocalDateTime.dateTime(
  1. DateTime dateTime, [
  2. CalendarSystem? calendar
])

Converts a DateTime of any kind to a LocalDateTime in the specified or ISO calendar. This does not perform any time zone conversions, so a DateTime with a DateTime.isUtc == true will still have the same day/hour/minute etc - it won't be converted into the local system time.

  • dateTime: Value to convert into a Time Machine local date and time
  • calendar: The calendar system to convert into, defaults to LocalDateTime in the ISO calendar.

Returns: A new LocalDateTime with the same values as the specified DateTime.

Implementation

factory LocalDateTime.dateTime(DateTime dateTime, [CalendarSystem? calendar]) {
  int ns;
  int days;

  if (Platform.isWeb) {
    var ms = dateTime.millisecondsSinceEpoch + dateTime.timeZoneOffset.inMilliseconds;
    days = ms ~/ TimeConstants.millisecondsPerDay;
    ms -= days * TimeConstants.millisecondsPerDay;
    if (ms < 0) days--;
    ns = TimeConstants.nanosecondsPerMillisecond *
        (ms % TimeConstants.millisecondsPerDay);
  } else {
    var us = dateTime.microsecondsSinceEpoch + dateTime.timeZoneOffset.inMicroseconds;
    days = us ~/ TimeConstants.microsecondsPerDay;
    us -= days * TimeConstants.microsecondsPerDay;
    if (us < 0) days--;
    ns = TimeConstants.nanosecondsPerMicrosecond *
        (us % TimeConstants.microsecondsPerDay);
  }

  return LocalDateTime.localDateAtTime(
      LocalDate.fromEpochDay(days, calendar),
      ILocalTime.trustedNanoseconds(ns));
}