2017-02-24 1 views
1

私はユーザーが次の形式で日付を入力するフォームを持っています:YYYY-MM-DDmongoDBから日付を取得して表示するには、moment.jsを使用しますか?

私はMongo DBに日付を保存します。デフォルトでは、Mongo DBはそれをUTC日付として保存します。

例: ユーザ入力2018年2月6日 モンゴ店:「火曜2018年2月6日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) 

: 「2018年2月5日(月曜日)」 これは正しくない、日付が2月6

なぜする必要がありますこれは起こっていますか?

私はこれを行うことによって、問題を解決しようとした:

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

私は正しい結果を得る:

:しかし、私は次の警告を得る "2018年2月6日(火曜日)"

enter image description here

(非推奨の警告:値は認識されたISO形式ではありません。 Date():すべてのブラウザとバージョンで信頼性がありません。 ISO以外の日付形式は推奨されず、今後のメジャーリリースで削除される予定です。詳細はhttp://momentjs.com/guides/#/warnings/js-date/を参照してください。

この問題を回避するにはどうすればよいですか?

答えて

1

あなたが解決策に非常に接近している、あなたはあなたの入力がUTCである瞬間を伝え、非推奨警告を避けるためにformat引数を渡すために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'));
<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>

0

は、だから私は、減価償却の警告を回避するためにこれをしなかった、そしてそれは

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' - 任意のより良い解決策をいただければ幸いです

0

これはVincenzoCの応答

代わりの瞬間(EVENTDATE ....)にほんの少しの編集で、正解はモーメントを有します。 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')); 
+0

スニペットを修正するために私のaswerを編集しました。私は答えの最初の部分でそれを使うことを提案して以来、私は 'moment.utc'を知っていました(私はちょっとしたことでそれを使うのを忘れてしまった)。あなたの最初の答えを受け入れたとマークした理由と、私がコメントしたり編集を提案したりする代わりに、この新しい回答を投稿した理由を本当に理解していません。 – VincenzoC

+0

申し訳ありません。私はこれに新しいです – Asool

関連する問題