关于dart:dart系列之时间你慢点走我要在dart中抓住你

52次阅读

共计 1801 个字符,预计需要花费 5 分钟才能阅读完成。

简介

工夫和日期是咱们常常会在程序中应用到的对象。然而对工夫和日期的解决因为有不同时区的起因,所以始终以来都不是很好用。就像在 java 中,为工夫和日期批改和新增了屡次 API,那么作为新生的语言 dart 而言,会有什么不一样的中央吗?

dart 中对于日期和工夫的两个十分重要的类是 DateTime 和 Duration.

其中 DateTime 示意的是工夫,而 Duration 示意的是时间差。

DateTime

先看一下 DateTime 的应用。

DateTime 示意的是一个工夫点。因为世界时钟有 UTC 和本地工夫两种。所以,在应用 DataTime 的时候,也能够应用这两种时钟。

最简略的就是获取以后的工夫:

var now = DateTime.now();

如果要创立指定日期的工夫,则能够将年月日传入 DateTime 的构造函数:

var now = DateTime(2021, 11, 20); 

留神,下面创立的日期是本地日期。

如果要创立 UTC time,则能够应用 DateTime.utc 办法:

var utc = DateTime.utc(2021, 11, 20);

还有一种示意工夫的办法是 unix time,Unix time 指的是从 1970 年 1 月 1 日开始所通过的秒数.

DateTime 有两种示意 Unix time 工夫的办法,别离是:

  DateTime.fromMicrosecondsSinceEpoch(10000);
  DateTime.fromMillisecondsSinceEpoch(10000);

他们的区别在于,一个示意的是微秒,一个示意的是毫秒。

DateTime 还能够将字符串转换成为 DateTime 对象:

var time= DateTime.parse('2002-02-27T14:00:00-0500');

事实上,DateTime.parse 能够承受多种字符类型,如下所示:

 `"2012-02-27"`
`"2012-02-27 13:27:00"`
 `"2012-02-27 13:27:00.123456789z"`
`"2012-02-27 13:27:00,123456789z"`
`"20120227 13:27:00"`
`"20120227T132700"`
`"20120227"`
`"+20120227"`
 `"2012-02-27T14Z"`
`"2012-02-27T14+00:00"`

Duration

Duration 示意的是两个工夫之间的差值。

来看下 Duration 的构造函数:

  const Duration(
      {int days = 0,
      int hours = 0,
      int minutes = 0,
      int seconds = 0,
      int milliseconds = 0,
      int microseconds = 0})
      : this._microseconds(microsecondsPerDay * days +
            microsecondsPerHour * hours +
            microsecondsPerMinute * minutes +
            microsecondsPerSecond * seconds +
            microsecondsPerMillisecond * milliseconds +
            microseconds);

能够看到 Duration 能够示意从天到 microseconds 的距离,曾经足够用了. 应该怎么应用呢?

var time = DateTime.now();

// 增加一年
var nextYear = time.add(const Duration(days: 365));
assert(nextYear.year == 2022);

同样的,咱们能够对还能够减去 Duration:

var time = DateTime.now();

// 缩小一年
var lastYear = time.subtract(const Duration(days: 365));
assert(lastYear.year == 2020);

当然还能够计算两个日期的差值:

var duration = nextYear.difference(time);
assert(duration.inDays == 365);

总结

以上就是 dart 中对工夫和日期的反对。

本文已收录于 http://www.flydean.com/17-dart-date-time/

最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!

欢送关注我的公众号:「程序那些事」, 懂技术,更懂你!

正文完
 0