read method

  1. @override
CellValue read(
  1. String v
)
override

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,
    );
  }
}