2016-09-27 18 views
5

現在、ISO 8601文字列を日時に解析するのにMoment jsを使用していますが、正しく動作していません。私は間違って何をしていますか?そして私は他の簡単な解決策も取るだろう。JavascriptでMoment jsを使用してISO 8601を日付と時刻の形式に解析する方法は?

私が解析したいISO 8601:

"10:20:30"

、テストとして console.log(moment("2011-04-11T10:20:30Z" ,moment.ISO_8601))console.log(moment("2011-04-11T10:20:30Z" , ["YYYY",moment.ISO_8601])を試してみましたが、それはただのすべての異なる種類のオブジェクトを返します。文字列の日付に "2011-04-11T10:20:30Z":文字列に "2011-04-11"と時間をプロパティ。

+0

: 'str.slice(0、-1).split( 'T');' – Xotic750

答えて

10

moment.js

var str = '2011-04-11T10:20:30Z'; 
 
var date = moment(str); 
 
var dateComponent = date.utc().format('YYYY-MM-DD'); 
 
var timeComponent = date.utc().format('HH:mm:ss'); 
 
console.log(dateComponent); 
 
console.log(timeComponent);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.15.1/moment.min.js"></script>

または単に文字列操作

文字列操作で

var str = '2011-04-11T10:20:30Z'; 
 
var parts = str.slice(0, -1).split('T'); 
 
var dateComponent = parts[0]; 
 
var timeComponent = parts[1]; 
 
console.log(dateComponent); 
 
console.log(timeComponent);

+0

あなたは素晴らしいです!まさに私が探していたもの!どうもありがとうございます。答えを受け入れ、upvoted。簡単な質問ですが、dateComponentとtimeComponentは両方とも文字列型ですか? – Walter

+0

両方の例では、「文字列」のタイプです。 – Xotic750

+0

私が探していたもの。もう一度Xotic750に感謝します。 Cool profile pic btw;) – Walter

9

瞬時に2つの部分があります:日付/時刻を読み込み、それを吐き出すことです。あなたは最初の部分を持っている:

moment("2011-04-11T10:20:30Z") 

が、その後、あなたは例えば、出力関数を呼び出す必要があります:

moment("2011-04-11T10:20:30Z").format('YYYY-MM-DD h:mm:ss a') 
+0

は、応答をありがとうございました。現在はコンソールログです: '2011-04-11 3:20:30 am'。だから、日付は正しいが時間は間違っている。それはhh:mm:ssではありませんか?試してみましたが、まだ10ではなく03になっています。 – Walter

+0

すべてのフォーマットパターンについては、http://momentjs.com/docs/#/displaying/をご覧ください。しかし、私は時間がフォーマットの問題だとは思わない。私はそれがタイムゾーンの問題だと確信しています。あなたの最初の日付文字列にはタイムゾーンビットがないので、それをいくつかのタイムゾーン(私は0 GMTと思われます)として解釈して、あなたの現在のタイムゾーンに相対的な時間を表示します(+/- 7 GMTから?)。これを解決するには、タイムゾーンでMomentのドキュメントを読んで(あるいは別の質問をしてみる)ことをお勧めします。 – machineghost

+0

サイドメモとして、タイムゾーンはモーメントについて最も迷惑なものの1つであり、私はしばしばそれらを書いて欲しいと思っています...しかし、最終的にはウェブ開発者としては私は喜んでいません。あなたのユーザはあなたとは異なるタイムゾーンであなたのサイトをほぼ確実に使用するでしょう。そのため、あなたのサーバに日付を保存する方法を考えることが重要です。そしてJS/Momentのコードは、 。 – machineghost

関連する問題