我需要转换以下内容
DateTime:"2017:10:01 19:06:57"
我尝试对image.exif.DateTime.toISOString()
但遇到了错误,我错过了什么?
答案 0 :(得分:2)
你必须用破折号替换前两个冒号。您可以通过.replace(/:(?=.* )/g, '-')
实现这一目标,在这种情况下,效果与.replace(':', '-').replace(':', '-')
相同。
此外,您必须用字母T替换空格。
var dateString = "2017:10:01 19:06:57";
var dateStringISO = dateString.replace(/:(?=.* )/g, '-').replace(' ', 'T');
// (timezone indicator is optional)
console.log(dateStringISO); // That format fulfills ISO 8601.
var date = new Date(dateString.replace(/:(?=.* )/g, '-'));
// here you could manipulate your date
console.log(date.toISOString());

答案 1 :(得分:0)
如果,您的浏览器不支持toISOString()方法。尝试以下代码
function ISODate(d) {
function pad(n) {return n<10 ? '0'+n : n}
return d.getUTCFullYear()+'-'
+ pad(d.getUTCMonth()+1)+'-'
+ pad(d.getUTCDate())+'T'
+ pad(d.getUTCHours())+':'
+ pad(d.getUTCMinutes())+':'
+ pad(d.getUTCSeconds())+'Z'
}
var d = new Date();
console.log(ISODate(d));
答案 2 :(得分:0)
任何JS实现都不太可能理解格式:
2017:10:01 19:06:57
EG。在Chrome的开发工具中:
08:28:08.649 new Date("2017:10:01 19:06:57") 08:28:08.649 Invalid Date
(冒号通常是时间分隔符,没有时间元素可以是2017年。)
因此,您需要自己解析它。类似的东西:
var year = parseInt(str.substring(0, 4));
var month = parseInt(str.substring(5, 7));
// etc for day, hour, min, sec
var d = new Date(year, month, day, hour, min, sec);
(这将创建到本地时间,如果您想要UTC,则使用Date.UTC
而不是构造函数。)