JavaScript转换DateTime:" 2017:10:01 19:06:57"字符串到ISO日期字符串

时间:2017-10-02 07:01:19

标签: javascript

我需要转换以下内容

DateTime:"2017:10:01 19:06:57"

我尝试对image.exif.DateTime.toISOString()

进行ISO日期/时间格式

但遇到了错误,我错过了什么?

3 个答案:

答案 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而不是构造函数。)