Javascript:如何将exif日期时间数据转换为时间戳?

Man*_*eth 4 javascript datetime exif date exif-js

在javascript中,使用exif-js提取图像文件的元数据时,我将日期时间格式设置为2017:03:09 14:49:21。

DateTimeOriginal属性中的值格式为YYYY:MMY:DD HH:MM:SS。当我使用var d = new Date(2017:03:09 14:49:21)时,它返回NaN。是YYYY,MM和DD之间的冒号引起了问题。

如何解决这个问题呢?

提前致谢。

Fem*_*emi 6

我的建议是使用Moment(http://momentjs.com/docs/),因为它提供了清晰的日期解析。使用Moment,您想要的是:

var tstamp = moment("2017:03:09 14:49:21", "YYYY:MM:DD HH:mm:ss");
var date = tstamp.toDate();
Run Code Online (Sandbox Code Playgroud)


Rob*_*obG 5

不要使用内置的解析器(即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());
Run Code Online (Sandbox Code Playgroud)

向值添加验证非常容易。否则,请使用库并确保您指定要解析的格式。


Sud*_*oti 3

如果格式始终相同,您可以进行简单的字符串操作并创建日期,如下所示:

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);
Run Code Online (Sandbox Code Playgroud)