fromDateTime function

DateTime fromDateTime(
  1. String jsonDate
)

Implementation

DateTime fromDateTime(String jsonDate) {
  if (jsonDate.startsWith("\/Date(")) {
    var epochAndZone = leftPart(rightPart(jsonDate, "("), ")")!;
    var epochStr = epochAndZone;
    if (epochAndZone.indexOf('-', 1) >= 0) {
      epochStr = lastLeftPart(epochAndZone, "-")!;
    } else if (epochAndZone.indexOf('+', 1) >= 0) {
      epochStr = lastLeftPart(epochAndZone, "+")!;
    }
    var epoch = int.parse(epochStr);
    return DateTime.fromMillisecondsSinceEpoch(epoch, isUtc: true);
  }
  var hasSecFraction = jsonDate.indexOf(".") >= 0;
  if (hasSecFraction) {
    var secFraction = lastRightPart(jsonDate, ".");
    bool isUtc = secFraction.endsWith('Z');
    if (isUtc) {
      secFraction = secFraction.substring(0, secFraction.length-1);
    }
    String tz = '';
    if (secFraction.contains('+')) {
      tz = '+' + rightPart(secFraction, '+')!;
      secFraction = leftPart(secFraction, '+')!;
    } else if (secFraction.contains('-')) {
      tz = '-' + rightPart(secFraction, '-')!;
      secFraction = leftPart(secFraction, '-')!;
    }
    if (secFraction.length > 6) {
      jsonDate = lastLeftPart(jsonDate, '.')! + '.' + secFraction.substring(0,6) + tz + (isUtc ? 'Z' : '');
    }
  }
  return DateTime.parse(jsonDate);
}