简介
工夫和日期是咱们常常会在程序中应用到的对象。然而对工夫和日期的解决因为有不同时区的起因,所以始终以来都不是很好用。就像在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/
最艰深的解读,最粗浅的干货,最简洁的教程,泛滥你不晓得的小技巧等你来发现!
欢送关注我的公众号:「程序那些事」,懂技术,更懂你!