dart系列之:时间你慢点走,我要在dart中抓住你
文章目錄
- 簡介
- DateTime
- Duration
- 總結
簡介
時間和日期是我們經常會在程序中使用到的對象。但是對時間和日期的處理因為有不同時區的原因,所以一直以來都不是很好用。就像在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/
最通俗的解讀,最深刻的干貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!
歡迎關注我的公眾號:「程序那些事」,懂技術,更懂你!
總結
以上是生活随笔為你收集整理的dart系列之:时间你慢点走,我要在dart中抓住你的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: URL URI傻傻分不清楚,dart告诉
- 下一篇: dart系列之:数学什么的就是小意思,看