我正在嘗試獲取字串日期 YYYY-MM-DD 并將其粘貼到日期物件中以與 matDatePicker 一起使用。問題是它顯示的是昨天的日期。我做了一些挖掘,發現問題在于 Date 將物件存盤為 UTC,然后轉換為當前時區。
我會完全跳過使用日期,除非我想使用 matDatePicker。但是,因為日期只是在前端加載,所以以后它是否準確并不重要(它沒有保存為日期時間,這讓我很懊惱)。如何加載具有年月日的 Date 物件并將其設定為用戶當前時區?我不控制用戶將在哪個時區,所以我正在尋找與時區無關的東西(即我不能只持續添加 6 小時)。
uj5u.com熱心網友回復:
如果您嘗試轉換格式為從YYYY-MM-DD哪里獲取用戶時區的日期?ISO 字串通常包含 0000在字串的末尾,其中最后一部分是時區。無論如何,我猜你實際上有一個 ISO 字串。
問題是當您決議 Date 物件時,它希望將時間轉換為相對于您的本地時間。當您使用 UTC 時間時,它會洗掉用戶時區。
所以我們可以做的是獲取用戶的初始日期時間。
let s = "2022-03-21T11:22:33 0000";
let d = new Date(Date.parse(s));
// Methods on Date Object will convert from UTC to users timezone
// Set minutes to current minutes (UTC) User local time UTC offset
d.setMinutes(d.getMinutes() d.getTimezoneOffset())
// Now we can use methods on the date obj without the timezone conversion
// my local time is: "2022-03-21T07:22:33.000Z"
console.log(d) // "2022-03-21T09:22:33.000Z"
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/448028.html
標籤:javascript 有角度的 日期 约会时间 mat-datepicker
上一篇:從熊貓期間減去四分之一
