read method
Implementation
@override
CellValue read(String v) {
if (v == '0') {
return const TimeCellValue(
hour: 0,
minute: 0,
second: 0,
millisecond: 0,
microsecond: 0,
);
}
if (v.startsWith('0.')) {
var delta = num.parse(v) * 24 * 3600 * 1000;
final time = Duration(milliseconds: delta.round());
final date = DateTime.utc(0).add(time);
return TimeCellValue(
hour: date.hour,
minute: date.minute,
second: date.second,
millisecond: date.millisecond,
microsecond: date.microsecond,
);
}
var delta = num.parse(v) * 24 * 3600 * 1000;
var dateOffset = DateTime.utc(1899, 12, 30);
final utcDate = dateOffset.add(Duration(milliseconds: delta.round()));
if (!v.contains('.') || v.endsWith('.0')) {
return DateCellValue(
year: utcDate.year,
month: utcDate.month,
day: utcDate.day,
);
} else {
return DateTimeCellValue(
year: utcDate.year,
month: utcDate.month,
day: utcDate.day,
hour: utcDate.hour,
minute: utcDate.minute,
second: utcDate.second,
millisecond: utcDate.millisecond,
microsecond: utcDate.microsecond,
);
}
}