[英]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.