簡體   English   中英

yyyy-mm-dd HH:mm:ss 格式的 Javascript 日期現在 (UTC)

[英]Javascript Date Now (UTC) in yyyy-mm-dd HH:mm:ss format

我的大腦一定是徹底炸了,但我終其一生都無法弄清楚如何將 UTC 格式的當前日期和時間格式化為字符串。 無論我做什么,我都只是在本地。

我有以下函數以正確的格式返回日期,但它始終是本地的。

 let datenow = new Date; console.log(datenow); // "2021-07-28T18:11:11.282Z" console.log(generateDatabaseDateTime(datenow)); // "2021-07-28 14:11:33" function generateDatabaseDateTime(date) { const p = new Intl.DateTimeFormat('en', { year:'numeric', month:'2-digit', day:'2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit', hour12: false }).formatToParts(date).reduce((acc, part) => { acc[part.type] = part.value; return acc; }, {}); return `${p.year}-${p.month}-${p.day} ${p.hour}:${p.minute}:${p.second}`; }

有誰知道我錯過了什么?

一種簡單的方法是從new Date()對象中獲取每個 UTC 單位並創建所需的字符串。

 const date = new Date(); const year = date.getUTCFullYear(); const month = String(date.getUTCMonth() + 1).padStart(2, '0'); // Month is 0-based const day = String(date.getUTCDate()).padStart(2, '0'); const hour = String(date.getUTCHours()).padStart(2, '0'); const minute = String(date.getUTCMinutes()).padStart(2, '0'); const second = String(date.getUTCSeconds()).padStart(2, '0'); const strDate = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; console.log(strDate);

添加 RobG 的寶貴建議,因為有時評論會被刪除:

稍微簡單一點: new Date().toLocaleString('en-CA',{timeZone:'UTC', hour12:false}).replace(',','')

我們應該使用內置的toISOString函數將其轉換為 ISO 日期格式,並使用字符串操作刪除不需要的數據。

 let datenow = new Date(); console.log(datenow); // "2021-07-28T18:11:11.282Z" console.log(generateDatabaseDateTime(datenow)); // "2021-07-28 14:11:33" function generateDatabaseDateTime(date) { return date.toISOString().replace("T"," ").substring(0, 19); }

理想的解決方案應該是使用 momentjs 或 dayjs 庫。

還添加了 RobG 建議的這個答案。

 let datenow = new Date; console.log(datenow); // "2021-07-28T18:11:11.282Z" console.log(generateDatabaseDateTime(datenow)); // "2021-07-28 14:11:33" function generateDatabaseDateTime(date) { const p = new Intl.DateTimeFormat('en', { year:'numeric', month:'2-digit', day:'2-digit', hour:'2-digit', minute:'2-digit', second:'2-digit', hour12: false, timeZone:'UTC' }).formatToParts(date).reduce((acc, part) => { acc[part.type] = part.value; return acc; }, {}); return `${p.year}-${p.month}-${p.day} ${p.hour}:${p.minute}:${p.second}`; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM