formatTimeline static method

String formatTimeline(
  1. int timestamp, {
  2. bool alwaysShowDetail = false,
  3. String languageCode = 'zh',
})

Implementation

static String formatTimeline(int timestamp, {bool alwaysShowDetail = false, String languageCode = 'zh'}) {
  var date = DateTime.fromMillisecondsSinceEpoch(timestamp);

  var today = DateTime.now();

  var standardDate = DateTime(today.year, today.month, today.day, 23, 59, 59);
  // The incoming date is compared with today's 23:59:59
  Duration diff = standardDate.difference(date);

  if (diff < const Duration(days: 1)) {
    return _format('HH:mm:ss', date);
  }

  if (diff >= const Duration(days: 1) && diff < const Duration(days: 2)) {
    if (languageCode == 'en') {
      return 'Yesterday ' + _format('HH:mm:ss', date);
    } else {
      return _format('昨天 HH:mm:ss', date);
    }
  }

  if (date.year == today.year) {
    if (languageCode == 'en') {
      return _format((alwaysShowDetail ? 'MM/dd HH:mm:ss' : 'MM/dd'), date);
    } else {
      return _format((alwaysShowDetail ? 'MM月dd日 HH:mm:ss' : 'MM月dd日'), date);
    }
  } else {
    if (languageCode == 'en') {
      return _format((alwaysShowDetail ? 'MM/dd/yyyy HH:mm:ss' : 'MM/dd/yyyy'), date);
    } else {
      return _format((alwaysShowDetail ? 'yyyy年MM月dd日 HH:mm:ss' : 'yyyy年MM月dd日'), date);
    }
  }
}