我一直在学习Dart,但是不知道如何生成时间戳。我尝试了以下代码:
void main() {
print((new Date()).millisecondsSinceEpoch);
}
感谢IDE,我能够做到这一步,但是我遇到了一个令人困惑的错误:
Exception: No such method: 'Date'
需要帮助吗?
你差不多做对了。你只是没有使用命名构造函数:
void main() {
print(DateTime.now().millisecondsSinceEpoch);
}
结果:
1351441456747
有关更多信息,请参阅API文档:https://api.dart.dev/stable/2.10.1/dart-core/DateTime-class.html
DateTime
中获取毫秒级别的时间戳,只需使用millisecondsSinceEpoch
属性。请记住,这不是一个可调用的函数,而是一个属性。DateTime time = DateTime.now();
time.millisecondsSinceEpoch;
1970年1月1日00:00:00 UTC 被称为Unix纪元。 因此,您将获得一个数字,它对应于自纪元以来经过的毫秒数。 还有一个microsecondsSinceEpoch
属性。
Dart文档 - https://api.dart.dev/stable/2.17.0/dart-core/DateTime/millisecondsSinceEpoch.html
这是我的解决方案
DateTime _now = DateTime.now();
print('timestamp: ${_now.hour}:${_now.minute}:${_now.second}.${_now.millisecond}');
void main() {
print(new DateTime.now().microsecondsSinceEpoch);
}
输出:
1591457696860000
void main() { print(DateTime.now().millisecondsSinceEpoch); }
print(DateTime.now().toString());
DateTime.Now() 还有其他方法,如 .day、.hour、.minute 等。 .millisecondsSinceEpoch 是一种独立于时区的获取方式 - 它表示自“Unix纪元”1970-01-01T00:00:00Z(UTC)以来经过的毫秒数。
DateTime.now()
给出了本地时区的一个时间点,而用于计算millisecondsSinceEpoch
的参考时间是1970年1月1日的UTC时间。因此,结果是一个UNIX时间戳,它表示一个时间点,不包含任何时区信息,因为它只是一个数字。你需要自己将结果时间点转换回特定时区的本地时间。 - xuiqzy