自学内容网 自学内容网

第三百六十八回


我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍如何获取时间戳.闲话休提,让我们一起Talk Flutter吧。

在这里插入图片描述

1. 概念介绍

我们在本章回中介绍的时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。在实际项目中会使用
时间戳来签名或者做加密。本章回中将详细介绍获取时间戳的方法。

2. 方法与细节

2.1 获取方法

获取时间戳的方法主要通过DataTime类实现,直接通过类中的成员就可以获取到,该类提供了两种类型时间戳:毫秒和微秒,详细如下:

  /// The number of milliseconds since
  /// the "Unix epoch" 1970-01-01T00:00:00Z (UTC).
  ///
  /// This value is independent of the time zone.
  ///
  /// This value is at most
  /// 8,640,000,000,000,000ms (100,000,000 days) from the Unix epoch.
  /// In other words: `millisecondsSinceEpoch.abs() <= 8640000000000000`.
  external int get millisecondsSinceEpoch;

  /// The number of microseconds since
  /// the "Unix epoch" 1970-01-01T00:00:00Z (UTC).
  ///
  /// This value is independent of the time zone.
  ///
  /// This value is at most
  /// 8,640,000,000,000,000,000us (100,000,000 days) from the Unix epoch.
  /// In other words: `microsecondsSinceEpoch.abs() <= 8640000000000000000`.
  ///
  /// Note that this value does not fit into 53 bits (the size of a IEEE double).
  /// A JavaScript number is not able to hold this value.
  external int get microsecondsSinceEpoch;

这是源代码中的内容,从中可以看出来它是一个十六位长度的数字,而且这个数字是基于当前时区的。

2.2 使用细节

正常的时间戳是以秒为单位的,我们获取到的是毫秒或者微秒,因此除以转换值就可以,比如毫秒1000可以转换成秒。我们获取到的时间戳是带时区的,如果不想在时间
戳中带时区,那么首先通过toUtc方法把时间转换成标准UTC时间,然后再从转换后的时间中获取时间戳。我们将在后面的小节中通过具体的代码来演示它的用法。

3. 示例代码

///获取带时区的时间戳
DateTime.now().millisecondsSinceEpoch;
///获取不带时区的时间戳
DateTime.now().toUtc().millisecondsSinceEpoch;

4. 内容总结

最后,我们对本章回的内容做一个全面的总结:

  • 使用DateTime类中的成员可以获取到时间戳;
  • 获取到的时间戳分毫秒级和微秒级两种类型;
  • 获取到的时间戳中带有时区信息;
    看官们,与"如何获取时间戳"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!

原文地址:https://blog.csdn.net/talk_8/article/details/136309459

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!