2012-03-20 4 views
2

私はXMLフィードを取得し、JavaScriptを使用してHTMLに書き出しています。javascriptで数字をyyyymmddに変換してyyyymmddをmm/dd/yyyyにします。

日付フィールドがあります。

20120319

私は何をしたいような、より読みやすい形式に変換します:

03/19/2012

これを行う簡単な方法がありますJavaScriptで?

+0

ありがとうございました。私はこのコードを使いました: 'exp.replace(/(\ d \ d)(\ d \ d)/ g、 '$ 2/$ 3/$ 1');' – Daniel

答えて

6

一つの方法は、書くことである:第二と、replaceへの2つの数字のシーケンスが続く二桁のシーケンスに続く4桁の配列を、正規表現を使用し

s = s.replace(/(\d\d\d\d)(\d\d)(\d\d)/g, '$2/$3/$1'); 

、プラス/、さらに3番目のプラスプラス/に加えて最初のプラス。

+0

'(\ d \ d \ d \ d)'美しくはありません - より良いのは '(\ d {4})' – Neysor

+1

@Neysor:OPが正規表現に言及していた場合、 } '、しかしそれがあったとしても、彼が正規表現に精通しているかどうかは分かりませんでしたので、できるだけシンプルな構文を使用するのが最善であると思いました。 – ruakh

+0

私は理解する:) – Neysor

7

理想的には、世界中で明白な「2012-03-19」のようなロケールに影響されない日付形式を使用することをお勧めします。それは言った:

var dateStr = "20120319"; 
var match = dateStr.match(/(\d{4})(\d{2})(\d{2})/); 
var betterDateStr = match[2] + '/' + match[3] + '/' + match[1]; 

あなたが望むことをします。これはMDYをハードコードします。ほとんどのヨーロッパで使用されているDMYが必要な場合は、match[2]match[3]を交換してください。

あなたはヒューリスティックは、現在のロケールが最初の月や日を好むかどうかを検出したい場合は、その後、

(new Date('01/02/1970').getDate() === 2) 

は助けることができます。

+0

+1 「ヨーロッパのほとんどの地域で使用されているように」、しかし世界のほとんどで。ああ、日付を信頼して文字列を解析するのではなく、期待してリースすると失敗します。 – RobG

関連する問題