2016-07-13 18 views
-2

私のコードは次のようである:JavaScriptで日時フォーマットを変更するには?

var createdDate = '2013-01-21 01:23:44'; 
createdDate = new Date(createdDate); 
date = createdDate.toLocaleDateString(); 
time = createdDate.toLocaleTimeString().replace(/(.*)\D\d+/, '$1'); 
console.log(date+' '+time); 

結果:2013年1月21日1:23

どれ:2013年1月21日1:23

私は結果が欲しいです私の問題を解決するソリューション?

+2

これは役に立ちませんか? http://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date – evolutionxbox

+1

私は[Date.js](http://www.datejs。 com /)、JSの日付書式設定は大きな苦痛です。あなたはあまりにも多くのコードを書く必要があります。 –

+0

あなたは 'dateformating library '(http://jacwright.com/projects/javascript/date_format/)を使うこともできます。たとえば' createdDate.format.format(' Ymd g:i A ') 'は' 2016-07-13 5:14 PM "' – evolutionxbox

答えて

3

もちろん、バニラのソリューションがありますが、JSの日付/時刻で作業するのは一般的に苦労します。あなたが深刻な容量で日付/時刻を使って作業するつもりなら、その頑強さと柔軟性のためにMoment.jsのフォーマット方法を使うことを強くお勧めします。そして、あなたが望むことをすることができるはずです。ドキュメントから

例:

moment().format(); // "2014-09-08T08:02:17-05:00" (ISO 8601) 
moment().format("dddd, MMMM Do YYYY, h:mm:ss a"); // "Sunday, February 14th 2010, 3:25:50 pm" 
moment().format("ddd, hA");      // "Sun, 3PM" 
moment('gibberish').format('YYYY MM DD');   // "Invalid date" 
+1

ありがとう、私はしばらくの間瞬間を使用していたし、これが可能だったのか分からなかった。小さな追加:time stringを 'moment(time_string).format(" DD.MM.YYYY HH:mm ")'のように直接コールにロードすることができます。 – Peon

0

あなたは(前にゼロで一桁の月と日を表示するように)ゼロパディングを可能にするためにNumberクラスを拡張できます。

Number.prototype.pad = function(size) { 
    var s = String(this); 
    while (s.length < (size || 2)) {s = "0" + s;} 
    return s; 
} 

pad関数は、オプションのsizeパラメータを取ります。これは、デフォルト値2で数値文字列の長さの合計を指定します。

あなたは次の3つのコンポーネント(結果を印刷するときpad機能を使用して)に日付を分割するために、既存のコードを更新できます。あなたはよりエレガント以下の詳細なソリューションを探しているなら、あなたは意志

var createdDate = new Date('2013-01-21 01:23:44'); 
var date = createdDate.toLocaleDateString(); 

var day = createdDate.getDate(); 
var month = createdDate.getMonth() + 1; //months are zero based 
var year = createdDate.getFullYear(); 

var time = createdDate.toLocaleTimeString().replace(/(.*)\D\d+/, '$1'); 

console.log(year + '-' + month.pad() + '-' + day.pad() + ' ' + time); 

外部ライブラリを使用する必要があります。

関連する問題