2017-07-14 8 views
2

私は20170603を日付に変換したいと思っています。関数new Date(2017,06,03)を使用したいが、日付から数値を抽出するにはどうすればよいですか?試しましたデリミタなしの文字列を日付に変換するにはどうすればよいですか?

new Date(parseInt(startDate.substr(0,4)), parseInt(startDate.substr(5,6)) -1, parseInt(startDate.substr(6,8))) 

しかし、これは私に非常に奇妙な値を与えます。正確な数値をDate関数にどのように抽出するのですか?

+0

'substr'の代わりに' slice'を使いたいとします。そして、 'parseInt'の基底として' 10'を渡すほうが良い – Bergi

+0

@Bergi基本変換の問題のために 'parseInt()'の代わりに '* 1'を助言したいと思ったので、私は状況を考えることができませんでしたこれは失敗するでしょう)。あなたはできる? – Phrogz

+0

@Phrogz年 '0999' :-)うん、失敗することはまずありませんが、それはベストプラクティスを適用しない理由ではありません。 – Bergi

答えて

3

substrの2番目のパラメータは、抽出する文字列の長さです。

new Date(parseInt(startDate.substr(0,4)), 
     parseInt(startDate.substr(4,2)) - 1, 
     parseInt(startDate.substr(6,2))); 

substr Method (String) (JavaScript)

3

文字カウントでRegExp

const date_str = "20170603"; 
 
console.log(new Date(date_str.replace(/(\d{4})(\d{2})(\d{2})/, "$1/$2/$3")));

0

スライスでreplace()を使用する:

new Date(my_str.match(/(....)(..)(..)/).slice(1,4).join('/')) 
1

外部ライブラリを使用する場合は問題ありません。私は使用することをお勧めしますmoment.js

利用可能な多くの方法があります。あなたの場合。

var d = new moment("20170603 ", "YYYYMMDD").toDate(); 

私は多くの課題を解決するためにこのライブラリを使用しています。

関連する問題