簡體   English   中英

如何使用moment.js從mongoDB獲取日期並顯示它?

[英]How to get date from mongoDB and display it, using moment.js?

我有一個表單,用戶按以下格式輸入日期:YYYY-MM-DD

我將日期存儲在 Mongo DB 中。 默認情況下,Mongo DB 將其存儲為 UTC 日期。

示例:用戶輸入 2018-02-06 Mongo 商店:“Tue Feb 06 2018 00:00:00 GMT+0000 (UTC)”

假設我想將此日期顯示回用戶。

以下代碼給了我錯誤的日期:

var eventDateString = $('#hiddenDate').val() // Just gets the date as stored in mongo
var dateObj = new Date(eventDateString)
var dateMom = moment(dateObj).format('dddd, MMMM DD YYYY');
console.log(dateMom)

打印出來的是:“Monday, February 05 2018” 這是不正確的,日期應該是 2 月 6 日。

為什么會這樣?

我試圖通過這樣做來解決這個問題:

var eventDateString = $('#hiddenDate').val();
$('#show-eventDate').text(moment.utc(eventDateString).format('dddd, MMMM DD YYYY'));

我得到了正確的結果:“2018 年 2 月 6 日,星期二”

但是,我收到以下警告:

在此處輸入圖片說明

(棄用警告:提供的值不是公認的 ISO 格式。moment 構造回退到 js Date(),這在所有瀏覽器和版本中都不可靠。不鼓勵非 ISO 日期格式,並將在即將發布的主要版本中刪除。請參閱http://momentjs.com/guides/#/warnings/js-date/了解更多信息....)

我該如何解決這個問題?

您非常接近解決方案,您必須使用moment.utc來告訴 moment 您的輸入是 UTC 並傳遞format參數以避免Deprecation Warning

代碼示例:

 var eventDateString = $('#hiddenDate').val(); var mom = moment.utc(eventDateString, 'ddd MMM DD YYYY HH:mm:ss ZZ'); $('#show-eventDate').text(mom.format('dddd, MMMM DD YYYY'));
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script> <input id="hiddenDate" type="hidden" value="Tue Feb 06 2018 00:00:00 GMT+0000 (UTC)"> <div id="show-eventDate"></div>

所以我這樣做是為了避免折舊警告,它奏效了

var eventDateString = $('#hiddenDate').val();
var index = eventDateString.indexOf('00:00');
var shortDate = eventDateString.substr(0,index-1);
$('#show-eventDate').text(moment(shortDate, 'ddd MMM DD YYYY').format('dddd, MMMM DD YYYY'));

但我不喜歡我硬編碼“00:00”的想法——任何更好的解決方案將不勝感激

這只是對 VincenzoC 回應的一個小編輯

而不是 moment(eventDate....),正確的解決方案是 moment.utc(.....)

var eventDateString = $('#hiddenDate').val();
var mom = moment.utc(eventDateString, 'ddd MMM DD YYYY HH:mm:ss ZZ'); 
$('#show-eventDate').text(mom.format('dddd, MMMM DD YYYY'));

這對我來說非常有效

moment(req.body.foo , "ddd MMM DD YYYY HH:mm:ss ZZ").format("DD/MM/YYYY");

暫無
暫無

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

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