2016-12-29 14 views
2

この質問はすでに今日尋ねられましたが、所有者はそれを削除したようです(4つの投票でさえ)。しかし、質問は面白かったので、私は自分自身で再び投稿することに決めました。文字列から日付形式を判別する方法は?

Javascriptに日付文字列を持つ1つのプロパティを持つオブジェクトがあります。

ここで、そのプロパティに新しいdatetimeを設定したいのですが、フォーマットを知らなくても新しいデータを設定するにはどうすればよいですか?

サンプルのdatetimeこののように見える "2018-01-01T20:09:00"

この質問は2答えに分けることができます。

  1. 現在述べた形式&プロパティをオブジェクトへの同じフォーマットを設定し確認します(これは、誰かがこれです日時書式の種類を言うならば容易に達成しているように見える)

  2. そのいくつかの一般的な解決策を特定します任意のdatetime形式を決定する&与えられたdatetimeを変換してオブジェクトプロパティを設定する。

+0

[moment.js](http://momentjs.com/docs/#/parsing/)のような日付/時刻ライブラリを使用することは簡単です。 – dloeda

+1

少なくとも、信頼性の高い方法ではありません。 1/2/2016は1月2日か2月1日ですか? –

+0

あなたが必要性を正しく理解していないようです –

答えて

2
var dat = new Date('2018-01-01T20:09:00'); 
console.log(dat.getFullYear()); 
console.log(dat.getUTCHours()); 
console.log(dat.getUTCMinutes()); 
1

次の仕事をして、その後moment.jsを使用することができた場合:

var dateFormats = { 
    "iso_int" : "YYYY-MM-DD", 
    "short_date" : "DD/MM/YYYY", 
    "iso_date_time": "YYYY-MM-DDTHH:MM:SS", 
    "iso_date_time_utc": "YYYY-MM-DDTHH:MM:SSZ" 
    //define other well known formats if you want 
} 

function getFormat(d){ 
    for (var prop in dateFormats) { 
     if(moment(d, dateFormats[prop],true).isValid()){ 
      return dateFormats[prop]; 
     } 
    } 
    return null; 
} 

var dateInput = "2018-01-01T20:09:00"; 

var formatFound = getFormat(dateInput); //returns "YYYY-MM-DDTHH:MM:SS" 
if(formatFound !==null){ 
    //do stuff 
} 

チェックthe moment js docsデフォルトでサポートさdateFormats詳細は、あなたdateFormatsを移入それらを持つオブジェクト。

+0

'瞬間('01 -01-2001 '、' YYYY-MM-DD ' ).isValid() 'はtrueを返します。モーメントは日付を解析するために最善を尽くし、予期しない結果を生む可能性があります。 – user2468170

関連する問題