moment.js

在js的程式哩,對於時間格式處理解析與驗證可以使用momentjs,
下面簡要整理

  1. 處理不同版本js的Date對於字串解析的不一致 var a = new Date(‘2016-01-01’); ES5(解成UTC), ES2015(解成local time)
  2. mutable: t.add(1, ‘days’) 這樣會直接影響到t,如果要重複操作時 t.clone().add(1, ‘days’), value可為負數
  3. 避免在操作 add傳入小數點
  4. 處理timezone相關問題時要注意DST, daylight saving time
  5. 儘量使用.format(…)顯示描述轉成字串的格式
  6. moment.utc(), moment().utc() 可以理解成目前是UTC timezone
  7. moment距離 x.diff(y) => x減去y 回傳 milliseconds
  8. moment.duration(milliseconds number) 再用 asDays()等的function轉單位

解析時間:

moment()
moment(Date)
moment(unix ms)
moment.unix(unix secs)
moment(字串str) //解析: 檢查ISO 8601 -> 檢查rfc 2822 -> new Date(str)
moment(str, format)
moment(str, format, strict)

產生字串 moment().format(…)

moment.utc().format(‘ddd, DD MMM YYYY HH:mm:ss [GMT]’); //rfc 2822
moment().toISOString() //=> “2018-10-11T03:44:53.612Z”

轉成其他物件或格式

moment().valueOf(); // (get unix ms), moment().unix(); (get unix secs)
moment().toDate(); //(get js Date)
moment().toArray(); // => [2018, 9, 11, 11, 44, 10, 780]
moment().toObject();

{ //moment.toObject()
  date: 11,
  hours: 11,
  milliseconds: 948,
  minutes: 45,
  months: 9,
  seconds: 26,
  years: 2018,
}

format驗證

moment().isValid();

註: 時間有關rfc: rfc 2822, 3339

This entry was posted in nodejs. Bookmark the permalink.

Leave a Reply