打字稿将日期转换为字符串,例如“ 20140127T224000Z”?

时间:2018-10-16 14:39:38

标签: javascript typescript

如何将Date对象转换为这样的字符串:“ 20140127T224000Z”

我有日期对象selectedTime

当我selectedTime.toISOString()得到

“ 2018-10-18T16:00:00.000Z”

然后,我应用替换功能:

var date = selectedTime.toISOString().replace('-','').replace(':','').replace('.','');

但是由于某种原因它不起作用,返回

enter image description here

我尝试添加mo replace函数,但是由于某些原因,我仍然得到相同的结果,未删除“-”或“:”

enter image description here

使用正则表达式也不起作用

enter image description here

这是打字稿中的代码段:

    onTimeSelected(selectedTime: Date, events) {
        var date = selectedTime.toISOString().replace('-','').replace('-','').replace(':','').replace(':','').replace('.','');
        var redirectTo = 'https://calendar.google.com/calendar/r/eventedit?dates=' + date + '/' + date;
        window.open(redirectTo, '_blank');
    }

好的,我会保持简单,您如何解释这一点:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:3)

如果为String#replace提供String作为其第一个参数,则只会替换第一个出现的事件。

您需要传递带有 g lob标志的正则表达式:

var date = selectedTime.toISOString().replace(/[-:.]/g,'');

答案 1 :(得分:1)

使用

var date = selectedTime.toISOString().replace(/[-:.]/g,''); 

相反。如果需要,可以添加此定义,然后使用它:

String.prototype.replaceAll = function (oldValue, newValue) {
    // see https://stackoverflow.com/a/6969486/2307070
    var sanitizedOldValue = oldValue.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    return this.replace(new RegExp(sanitizedOldValue, 'g'), newValue);
}

var date = new Date().toISOString().replaceAll('-','').replaceAll('.','').replaceAll(':','');

console.log(date);