2016-09-06 5 views
0

問題質問:日付文字列(任意のフォーマット31/10/93または10/31/93または93/10/31)を使用していて、これを日付オブジェクト(UTC形式)に変換する必要があります。momentjsを使用する日付文字列

momentjsを使用してこれを行う方法は?

私が試したものmoment.utc(date)しかし結果はありません。

これを行う方法についてのご意見はありますか?

+0

http://stackoverflow.com/questions/23299950/convert-date-to-utc-using-moment-js – vikramjb

答えて

2

hereを説明するように、複数のフォーマットで文字列を解析することができます詳細は、次のセクションを参照してください。

必要な場合は、ロケールパラメータも渡すことができます。これは、あなたが一例として与えた入力のための細かい動作しますが、あなたに01/02/93のような入力のunexepcted結果を与える可能性があり

var arr = ['31/10/93','10/31/93','93/10/31']; 
 

 
for(var i=0; i< arr.length; i++){ 
 
    var m = moment.utc(arr[i], ['DD/MM/YY', 'MM/DD/YY', 'YY/MM/DD']); 
 
    console.log(m.format('DD MMMM YYYY')); // 31 October 1993 
 
}
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>

次のコードでは、あなたの質問に可能な解決策を示しています。この文字列は、1 February 19932 January 1993の両方を表すことができます。ドキュメントに記載されているように、ので

示唆コードは01 February 1993を示すであろう。

モーメントが使用するフォーマットを決定するためにいくつかの簡単なヒューリスティックを使用します。順序:

  • 有効な日付が無効なものよりも優先される形式が好ましい。
  • より多くの文字列を解析し、少ない文字列よりも多くの形式を使用する形式を使用することをお勧めします。つまり、より厳密な解析を優先します。あなたがUnixタイムスタンプを必要とする場合は、valueOf()unix()を使用することができますしているときに、toDate()メソッドを使用することができた瞬間オブジェクトからJavaScriptの日付が必要な場合は
  • は後で

よりも早く、アレイ内の形式を好みます。あなたのコメントの後


、私はmoment.localeData()を使用して"ローカライズ"フォーマットを取得することをお勧めすることができます。 longDateFormat('L')を使用すると、ローカライズされた書式文字列を取得し、解析関数で使用できます。たとえば、longDateFormat('L')は、usロケールでMM/DD/YYYYitDD/MM/YYYYを返します。コードサンプル:動的

var s = '01/02/93'; 
 

 
function formatSample(s){ 
 
    var ldf = moment.localeData().longDateFormat('L'); 
 
    return moment.utc(s, [ldf, 'YY/MM/DD']).format('DD MMMM YYYY'); 
 
} 
 

 
moment.locale('us'); 
 
formatSample(s); // 02 January 1993 
 
moment.locale('it'); 
 
formatSample(s); // 01 febbraio 1993
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment-with-locales.min.js"></script>

+0

あなたの答えは十分です!しかし、私はmomentに 'moment.local()'を見て、日付をUTCに変換するために使用するフォーマットを特定するものがあることを願っています。 – GeekOnGadgets

+0

@GeekOnGadgetsあなたのコメントであなたが説明したことをあなたに伝えようと私の答えを更新しました。 – VincenzoC

+0

'2016年2月2日 'をローカルのユーザー日付形式に変更するにはどうすればよいですか? 「DD/MM/YYYY」や「MM/DD/YYYY」や「YYYY/MM/DD」のように – GeekOnGadgets

0

あなたがフォーマットを知らないのであれば、あなたはそれを知ることができません。 1/2/93は最初にjanの2番目または2番目にすることができるので、 モーメントコンストラクタの形式を指定する必要があります。 moment.jsがあなたのためにこれを正しく決定する方法はありません。

http://momentjs.com/docs/#/parsing/string-format/

+0

缶瞬間テイク形式?地方を渡すことによって? – GeekOnGadgets

+0

あなたは、文字列を解析して次のようにモーメントオブジェクトに変換するたびに、フォーマットを与えます:モーメント( "12-25-1995"、 "MM-DD-YYYY"); – sagie

関連する問題