2017-03-29 19 views
0

exif-jsを使用して画像ファイルのメタデータを抽出する際に、2017:03:09 14:49:21のように日付時刻形式を取得しています。Javascript:exif日付時刻データをタイムスタンプに変換するには?

DateTimeOriginalプロパティの値は、YYYY:MMY:DD HH:MM:SSの形式になっています。 var d = new Date(2017:03:09 14:49:21)を使用すると、NaNが返されます。問題を引き起こすのは、YYYY、MM、DDの間のコロンです。

この問題を解決するにはどうすればよいですか?

ありがとうございます。

+0

2017:03:09 14:49:21 **は**タイムスタンプです。 – RobG

答えて

0

あなたは、単純な文字列操作を行うと、フォーマットのように、常に同じである場合は、日付を作成することができます。

var str = "2017:03:09 14:49:21".split(" "); 
//get date part and replace ':' with '-' 
var dateStr = str[0].replace(/:/g, "-"); 
//concat the strings (date and time part) 
var properDateStr = dateStr + " " + str[1]; 
//pass to Date 
var date = new Date(properDateStr); 
console.log(date); 
+0

ありがとう:) –

+0

そしてそれがサファリで失敗するのを見てください。 :-(それは、組み込みのパーサによって(非常に信頼性の低い)解析されなければならない新しい文字列を生成するためだけに文字列を解析する意味がありません。 1月から1) – RobG

1

私はMoment(http://momentjs.com/docs/)を使用することをお勧めします。これは、日付のクリーンな解析です。モーメントが、何が欲しいのはこれです:

var tstamp = moment("2017:03:09 14:49:21", "YYYY:MM:DD HH:MM:SS"); 
var date = tstamp.toDate(); 
+0

ありがとうございます。それを行う他の方法はありますか?私が唯一の方法でない限り、ただ一つの配列に対してjs全体をロードしたくない。 –

+0

「ライブラリXを使用する」という回答は特に役に立ちません。 OPの形式を解析するコードは2行です。 – RobG

+0

EXIFの日付を正しく解析するには、構文解析構文 "YYYY:MM:DD HH:mm:ss"を使用する必要があります。 –

0

は使用しないでくださいビルトイン主に実装に依存し、信頼性が低いため、文字列を解析するためのパーサ(つまりDateコンストラクタまたはDate.parse)あなたが有効であるために日付を信頼することができた場合は、次のように行います:

/* Parse date string in YYYY-MM-DD hh:mm:ss format 
 
** separator can be any non-digit character 
 
** e.g. 2017:03:09 14:49:21 
 
*/ 
 
function parseDate(s) { 
 
    var b = s.split(/\D/); 
 
    return new Date(b[0],b[1]-1,b[2],b[3],b[4],b[5]); 
 
} 
 

 
console.log(parseDate('2017:03:09 14:49:21').toString());

それは値に検証を追加するのはとても簡単です。それ以外の場合は、ライブラリを使用し、解析する書式を指定してください。

+0

それは素晴らしいです、ありがとう:) –

関連する問題