我正在做單元測驗。
it("month calculate", () => {
const baseDate = new Date("2015-02-15T12:00:00.000Z"/span>) 。
baseDate.setMonth(baseDate.getMonth() 1)
expect(baseDate.toISOString())。toBe("2015-03-15T12:00:00.000Z")
})
在我的本地節點行程中,我得到了這個錯誤
。Expected: "2015-03-15T12:00:00.000Z"
Received: "2015-03-15T13:00:00.000Z"
在docker節點行程上可以作業。
我相信這與DST有關,但我不明白是怎么回事......
uj5u.com熱心網友回復:你是對的,DST正在發揮作用,因為你正在使用本地時間setMonth/getMonth方法,所以DST也在其中(添加月份,Date物件將DST考慮在內,以避免改變每日時間;但是當你用UTC看結果時,你看到時間被DST抵消了,因為是本地時間的數學應用到增量)。要像你的其他代碼一樣在UTC中作業,請使用setUTCMonth/getUTCMonth代替。
it("month calculate", () => {
const baseDate = new Date("2015-02-15T12:00:00.000Z"/span>) 。
baseDate.setUTCMonth(baseDate.getUTCMonth() 1)
expect(baseDate.toISOString()).toBe("2015-03-15T12:00:00.000Z"/span>)
})
很可能你的docker節點是在UTC作業,或者至少是在DST不在當月改變的時區(例如,在英國就沒有,我們在3月下旬才改變)。但是在你的本地時區,顯然DST會在那個月發生,所以你在本地看到了這個問題,但在docker節點上沒有。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/310885.html
標籤:
上一篇:如何用Pandas將一個有年數的列添加到另一個有日期的列中?
下一篇:查找某月最后一個事件的SQL查詢
