如何在Dart中获取时间戳?

184

我一直在学习Dart,但是不知道如何生成时间戳。我尝试了以下代码:

void main() {
  print((new Date()).millisecondsSinceEpoch);
}

感谢IDE,我能够做到这一步,但是我遇到了一个令人困惑的错误:

Exception: No such method: 'Date'

需要帮助吗?

7个回答

361

1
这是UTC结果吗? - Jaimin Modi
DateTime.now()给出了本地时区的一个时间点,而用于计算millisecondsSinceEpoch的参考时间是1970年1月1日的UTC时间。因此,结果是一个UNIX时间戳,它表示一个时间点,不包含任何时区信息,因为它只是一个数字。你需要自己将结果时间点转换回特定时区的本地时间。 - xuiqzy
它提供了一个时间点,以及与其创建时相关的本地时区。 - xuiqzy

11
为了从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


11

这是我的解决方案

DateTime _now = DateTime.now();
print('timestamp: ${_now.hour}:${_now.minute}:${_now.second}.${_now.millisecond}');

5
微秒(Microseconds)也可以在Dart中本地使用:(无需导入包)。
void main() {
  print(new DateTime.now().microsecondsSinceEpoch);
}

输出:

1591457696860000


1
该评论不应作为答案存在,可以在主要答案下添加评论或请求编辑。现在 - 它是重复的。 - genericUser

1

void main() { print(DateTime.now().millisecondsSinceEpoch); }


0
您可以轻松地将当前时区的时间戳打印为字符串,如下所示:

print(DateTime.now().toString());

DateTime.Now() 还有其他方法,如 .day、.hour、.minute 等。 .millisecondsSinceEpoch 是一种独立于时区的获取方式 - 它表示自“Unix纪元”1970-01-01T00:00:00Z(UTC)以来经过的毫秒数。


0
答案可能会发布得很晚,但它可能会帮助其他人。我已经尝试了所有上面的答案,它们完美地获取了时间戳。但是,要获取当前时间,需要做一些额外的工作,你需要除以1000。
DateTime.now().millisecondsSinceEpoch / 1000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接