在應用程式中,我正在開發我有一個日期input欄位。
我想用它來搜索appointments特定日期的集合。
在服務器上,我正在處理所有日期UTC,這就是搜索的進行方式
const date = // date in iso sent from client
const startDate = new Date(date);
const endDate = new Date(date);
startDate.setUTCHours(0);
endDate.setUTCHours(24);
query.date = {
$gte: startDate,
$lt: endDate,
};
問題是每當我從input欄位中搜索日期時,就會發生一些怪癖,例如
當我發送到前一天的ISO某些搜索中的日期時,該日期將根據該約會的時間出現。
我嘗試像這樣更改日期date.setHours(0)然后發送ISO字串,同樣的事情發生的唯一區別是在約會時間超過 5 AM 時出現問題UTC
在這種情況下我該怎么辦?
uj5u.com熱心網友回復:
由于時間偏移,它看起來正在發生。您可以嘗試將時間偏移差添加到 UTC 時間。這可能會給你想要的結果。
收到 ISO 格式的日期后,您可以嘗試類似的操作。
19800 是“亞洲/加爾各答”的時區偏移的默認值(以秒為單位)
const newDate = new Date()
const serverOffset = newDate.getTimezoneOffset() * 60
const utcDifference = 19800 serverOffset
console.log(utcDifference);
您可以使用此 UTCDifference 來獲取您的本地時間。
uj5u.com熱心網友回復:
我能夠通過切換setUTCHours到setHours服務器來解決問題
問題是我正在更改UTC從我收到的原始日期開始的小時數,這使它落后于偏移量差異,所以我弄亂了搜索日期,因此設定語言環境時間可以正確地在兩個日期之間進行搜索日期,然后 mongoose 已經正確地在集合中搜索所需的日期。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360066.html
上一篇:您好,我有3個集合,如何通過單個請求進行連接以選擇資料?
下一篇:錯誤:集合方法聚合是同步的
