我第一次嘗試使用date-fns庫來決議日期(我洗掉了moment.js,我將在我的專案中引入date-fns),但是,當我使用parse函式時,我得到的結果是前一天。我在這個主題中看到
這個問題是由于時區造成的,但我無法解決我的問題,因為我收到的日期格式是 "yyyyMMdd"。這是我的代碼
var start ="20210119" ;
var stop ="20210130";
const dateFrom = parse(start, "yyyyMMdd", new Date()>。)
console.log("date form"/span>,dateFrom)。
我的控制臺日志的輸出是:2021-01-18T23:00:00.000Z
uj5u.com熱心網友回復:
你的dateFrom日期實際上是正確的,假設你想用你的本地時間。
它在你的控制臺輸出中顯示一個小時之前的原因是因為它是以UTC時間顯示的(因此在末尾的'Z'代表Zulu)。我假設你的本地時間比一月的UTC時間早一小時。
我們可以使用Date.toLocaleString()來輸出UTC或當地時間的時間。
如果我們以本地時間輸出,我們看到日期實際上是正確的(2021-01-19 00:00:00),如果我們以UTC輸出(將timeZone設定為'UTC'),我們看到它提前了一個小時(如您的控制臺輸出)。
我們也可以使用Date.getFullYear()、Date.getMonth()和Date.getDate()輸出本地日期。
var start ="20210119"。
var stop ="20210130";
const dateFrom = dateFns. parse(start, "yyyyMMdd", new Date()) 。
console.log("Date from (is Date object):", dateFrom instanceof Date) 。
console.log("
日期來自(console.log):",dateFrom)。
console.log("Date from (UTC):", dateFrom。 toLocaleString([], { timeZone: 'UTC' })。
console.log("
Date from (Local):", dateFrom.toLocaleString())。
console.log("Date from (Local):", dateFrom.toDateString() )。)
console.log("Date from (Local):"/span>, `${dateFrom. getFullYear()}-${dateFrom.getMonth() 1}-${dateFrom.getDate()}`);
<script src="https://cdnjs. cloudflare.com/ajax/libs/date-fns/1.28.5/date_fns.min.js"></script>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311916.html
標籤:
