2017-11-02 1 views
0

UTCの日付をバックエンドから変換していますので、画面に表示する前に日付を現地時間形式に変換する必要があります。moment.jsを使用してローカライズされた日付を処理してローカルの日付/時刻に変換します

私は、

moment.locale(currentLocale); //Here currentLocale is the user's locale. 
localtime = moment.utc(inputDate).toDate(); // inputDate = 2017年11月01日 AM10:42 (GMT) 
moment(localtime).format(formatType); //formatType = "MMMM Do YYYY, h:mm A" 

私たちは、翻訳日付を取得するときに日付が英語であるが、ないときこれが正常に動作を使用してきました。

翻訳された日付を処理してロケールの日付と時刻に変換し、可能であれば数字を変換する方法はありますか?

+1

パース時の日付の形式を指定する必要があります。そうでない場合は、パーサーに推測させるだけです。 [* moment(string、string)*](http://momentjs.com/docs/#/parsing/string-format/)を参照してください。 – RobG

答えて

0

あなたが解析している文字列のフォーマットをパーサーに与える必要があります。あなたは、あなたが得ているエラーを無視している必要があります。

var inputDate = 'inputDate = 2017年11月01日 AM10:42 (GMT)' 
 
var parseFormat = 'YYYY MM DD Ah:mm'; 
 
var printFormat = 'MMMM Do YYYY, h:mm A'; 
 

 
var d = moment.utc(inputDate, parseFormat).toDate(); 
 
console.log('Local: ' + moment(d).format(printFormat)); 
 
console.log('UTC : ' + moment.utc(d).format(printFormat));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.1/moment.min.js"></script>

瞬間オブジェクトに文字列を解析する技術、そしてちょうどmoment.utcオブジェクトに戻ってそれを解析するためのECMAScript日付を作成することは私には奇妙です。出力オフセットをUTCに設定することなく、文字列をUTCとして解析する方法はないようです。

+0

ありがとうございました。これは多くの助けとなりました。私の問題は、日付がバックエンドから来るフォーマットを認識していないため、固定された 'parseFormat'を使用できないということです。私は必要に応じて日付を処理するためにバックエンドからフォーマットを取得しようとしています。もし周りに道があれば教えてください。 – Taani

関連する問題