fromDateTime function
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);
}