如果我在時區為的服務器上收到以下日期字串 03:00
2022-10-24T00:00:00 05:00
我想將時間設定為固定的時間,比如說早上 8 點,所以結果是
2022-10-24T08:00:00 05:00
這將轉換為2022-10-24T06:00:00 03:00根據服務器的時區。
如何在不直接修改字串的情況下使用 Date 物件或時刻來實作這一點?我的問題是,如果我在創建日期/時刻物件后嘗試設定小時,該物件將設定已經轉換為服務器時區日期(2022-10-24T08:00:00 03:00)的小時。
uj5u.com熱心網友回復:
我建議luxon用于此目的,moment.js is not recommended for new projects.
DateTime.fromISO()使用該方法很容易,將setZone引數設定為 true 并傳入原始時間戳。
如果我們現在記錄日期,我們應該會看到:
2022-10-24T00:00:00.000 05:00
然后我們可以使用該set()方法將小時設定為 8。
如果我們現在記錄日期,我們應該會看到(如預期的那樣):
2022-10-24T08:00:00.000 05:00
然后我們可以使用DateTime.toLocal()回傳到本地或服務器時區。
如果我們現在記錄日期,我們應該會看到:
2022-10-24T06:00:00.000 03:00
(只要我們處于當前 UTC 03:00 的時區)
const { DateTime } = luxon;
let dt = DateTime.fromISO('2022-10-24T00:00:00 05:00', { setZone: true });
console.log('Initial date:'.padEnd(24), dt.toString());
dt = dt.set({ hour: 8 });
console.log('After setting hour:'.padEnd(24), dt.toString());
console.log('After setting to local:'.padEnd(24), dt.toLocal().toString() );
.as-console-wrapper { max-height: 100% !important; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/luxon/3.0.1/luxon.min.js" integrity="sha512-6ZJuab/UnRq1muTChgrVxJhSgygmL2GMLVmSJN7pcBEqJ1dWPbqN9CiZ6U3HrcApTIJsLnMgXYBYgtVkJ8fWiw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/522205.html
上一篇:將分鐘和小時添加到字串時刻js
