toDateTime method
If String cannot be parsed after parsing with DateTime.tryParse, further parsing is attempted using the sequence "yyyyMMddHHmmss".
If parsing is not possible, defaultValue
or DateTime.now is returned.
StringをDateTime.tryParseでパースしたのちパースできなければ、"yyyyMMddHHmmss"の並びでさらにパースを試みます。
パースできなかった場合、defaultValue
、もしくはDateTime.nowを返します。
Implementation
DateTime toDateTime([DateTime? defaultValue]) {
if (isEmpty) {
return defaultValue ?? DateTime.now();
}
final dateTime = DateTime.tryParse(this);
if (dateTime != null) {
return dateTime;
}
final year = int.tryParse(substring(0, 4));
final month = int.tryParse(substring(4, 6));
final day = int.tryParse(substring(6, 8));
final hour = int.tryParse(substring(8, 10));
final minute = int.tryParse(substring(10, 12));
final second = int.tryParse(substring(12, 14));
if (year == null) {
return defaultValue ?? DateTime.now();
}
if (month == null) {
return DateTime(year);
}
if (day == null) {
return DateTime(year, month);
}
if (hour == null) {
return DateTime(year, month, day);
}
if (minute == null) {
return DateTime(year, month, day, hour);
}
if (second == null) {
return DateTime(year, month, day, hour, minute);
}
return DateTime(
year,
month,
day,
hour,
minute,
second,
);
}