时间戳别名 Epoch timestamp 或 Unix timestamp 是一个长数字,代表自1970-01-01 PST以来的毫秒数。 它是一个自1970-01-01 PST以来的毫秒数。 有时,你需要在dart和flutter中把时间戳转换为DateTime对象。
如何在Dart和Flutter中把时间戳转换为DateTime?
这个例子将时间戳以毫秒和微秒转换为DateTime
让我们看看如何获得以毫秒和微秒计的当前时间戳。
void main() {
print(DateTime.now()); //2022-04-10 11:51:16.566
print(DateTime.now().millisecondsSinceEpoch); //1649571676566
print(new DateTime.now().microsecondsSinceEpoch); //1649571676566000
DateTime提供了两个方法fromMicrosecondsSinceEpoch
。从一个给定的微秒创建DateTime对象
DateTime DateTime.fromMicrosecondsSinceEpoch(int microsecondsSinceEpoch, {bool isUtc = false})
microsecondsSinceEpoch
:该长数字代表经过微秒的纪元时间戳isUtc
: 默认为false,返回本地DateTime,true,返回UTC日期和时间。fromMillisecondsSinceEpoch
:
DateTime DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch, {bool isUtc = false})
millisecondsSinceEpoch
:长的数字代表毫秒经过的纪元时间戳isUtc
: false,返回本地DateTime,true,返回UTC日期和时间。
下面是一个example program parse timestamp to Local DateTime
void main() {
var microSeconds = 1649571676566000;
var date = new DateTime.fromMicrosecondsSinceEpoch(microSeconds);
print(date); //2022-04-10 11:51:16.566
var milliSeconds = 1649571676566;
var date1 = DateTime.fromMillisecondsSinceEpoch(milliSeconds);
print(date1); //2022-04-10 11:51:16.566
2022-04-10 11:51:16.566
2022-04-10 11:51:16.566
让我们看一个将时间戳转换为Datetime的例子,UTC时间戳fromMicrosecondsSinceEpoch
和fromMillisecondsSinceEpoch
方法接受了isUtc:true
参数来返回UTC时区
void main() {
var microSeconds = 1649571676566000;
var date = new DateTime.fromMicrosecondsSinceEpoch(microSeconds, isUtc: true);
print(date); //2022-04-10 06:21:16.566Z
var milliSeconds = 1649571676566;
var date1 = DateTime.fromMillisecondsSinceEpoch(milliSeconds, isUtc: true);
print(date1); //2022-04-10 06:21:16.566Z
2022-04-10 06:21:16.566Z
2022-04-10 06:21:16.566Z
在输出中,Datetime中的Z格式代表UTC日期和时间的ISO8601 Datetime标准。