我需要將 4 小時添加到我的時刻 js 日期。所以為此我正在使用
/* this timestamp is this date 27-03-2045 00:00 */
const someday = moment(2374178400000);
const addedFourHours = someday.add(4, 'hours');
3 月 27 日 DST 已經過去,我正好加了 4 個小時,結束日期addedFoursHours是Mon Mar 27 2045 04:00:00 GMT 0200。
但是當我嘗試 DST 發生的日期時,例如 3 月 26 日午夜
/* this timestamp is this date 26-03-2045 00:00 */
const someday = moment(2374095600000);
const addedFourHours = someday.add(4, 'hours');
然后我明白了Sun Mar 26 2045 05:00:00 GMT 0200。在以前的情況下,當我在午夜后 4 小時添加時,我得到了 04:00 時間。為什么在 DST 時間我得到 05:00 時間?
我該如何解決這個問題?
uj5u.com熱心網友回復:
然后你想要的實際上不是增加4 小時,而是找到下一個小時數是 4 的倍數的時間。
因此,請從您的代碼中洗掉您要添加四個小時的所有建議(參見您的變數名稱)。
你可以這樣做:
const someday = moment(2374095600000);
console.log(someday.toString());
const hours = someday.hours();
someday.hours(hours 4 - (hours % 4)); // Find next time that is multiple of 4.
console.log(someday.toString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>
uj5u.com熱心網友回復:
您想根據日期添加 3、4 或 5 小時,但您想為小時設定特定值。讀取小時值,加 4 并設定值:
const today = moment(2374178400000);
const four = moment(today).hours(today.hour() 4);
const eight = moment(four).hours(four.hour() 4);
const twelve = moment(eight).hours(eight.hour() 4);
const sixteen = moment(twelve).hours(twelve.hour() 4);
const twenty = moment(sixteen).hours(sixteen.hour() 4);
const tomorrow = moment(twenty).hours(twenty.hour() 4);
console.log(today);
console.log(four);
console.log(eight);
console.log(twelve);
console.log(sixteen);
console.log(twenty);
console.log(tomorrow);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.3/moment.min.js"></script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/469397.html
標籤:javascript 日期 约会时间 时刻
