TimelineUtil
時間軸工具類。例如,(小于10s->剛剛)、x分鐘、x小時、x天、[今年: (昨天/1天前)、(2天前)、MM-dd]、[往年: yyyy-MM-dd]。TimelineUtil支持中英文格式輸出,支持自定義配置信息,豐富的輸出格式。
Add dependency
dependencies:
common_utils: x.x.x #latest version
APIs
-
TimelineUtil
///(xx)為可配置輸出
enum DayFormat {
///(小于10s->剛剛)、x分鐘、x小時、(昨天)、x天.
Simple,
///(小于10s->剛剛)、x分鐘、x小時、[今年: (昨天/1天前)、(2天前)、MM-dd],[往年: yyyy-MM-dd].
Common,
///日期 + HH:mm
///小于10s->剛剛)、x分鐘、x小時、[今年: (昨天 HH:mm/1天前)、(2天前)、MM-dd HH:mm],[往年: yyyy-MM-dd HH:mm].
Full,
}
///Timeline信息配置.
abstract class TimelineInfo {
String suffixAgo(); //suffix ago(后綴 后).
String suffixAfter(); //suffix after(后綴 前).
String lessThanTenSecond() => ''; //just now(剛剛).
String customYesterday() => ''; //Yesterday(昨天).優先級高于keepOneDay
bool keepOneDay(); //保持1天,example: true -> 1天前, false -> MM-dd.
bool keepTwoDays(); //保持2天,example: true -> 2天前, false -> MM-dd.
String oneMinute(int minutes); //a minute(1分鐘).
String minutes(int minutes); //x minutes(x分鐘).
String anHour(int hours); //an hour(1小時).
String hours(int hours); //x hours(x小時).
String oneDay(int days); //a day(1天).
String days(int days); //x days(x天).
}
setLocaleInfo : 自定義設置配置信息.
formatByDateTime : 格式輸出時間軸信息 by DateTime .
format : 格式輸出時間軸信息.
Example
// Import package
import 'package:common_utils/common_utils.dart';
class ZHAliPayTimelineInfo implements TimelineInfo {
String suffixAgo() => '前';
String suffixAfter() => '后';
String lessThanTenSecond() => '剛剛';
String customYesterday() => '昨天';
bool keepOneDay() => true;
bool keepTwoDays() => false;
String oneMinute(int minutes) => '$minutes分';
String minutes(int minutes) => '$minutes分';
String anHour(int hours) => '$hours小時';
String hours(int hours) => '$hours小時';
String oneDay(int days) => '$days天';
String days(int days) => '$days天';
}
class ENAliPayTimelineInfo implements TimelineInfo {
String suffixAgo() => ' ago';
String suffixAfter() => ' after';
String lessThanTenSecond() => 'just now';
String customYesterday() => 'Yesterday';
bool keepOneDay() => true;
bool keepTwoDays() => false;
String oneMinute(int minutes) => 'a minute';
String minutes(int minutes) => '$minutes minutes';
String anHour(int hours) => 'an hour';
String hours(int hours) => '$hours hours';
String oneDay(int days) => 'a day';
String days(int days) => '$days days';
}
setLocaleInfo('zh_alipay',ZHAliPayTimelineInfo());
setLocaleInfo('en_alipay', ENAliPayTimelineInfo());
Stringtimeline=TimelineUtil.format(timeMillis,locale:(isChinese ? 'zh_alipay' : 'en_alipay'));
以下是主流app時間軸示例:
微信
中文
English
微博
中文
English
支付寶
中文
English