使用momentjs检测字符串和时间之间的日期



我有一个像这样的字符串

Occurs every 1 weeks on Sunday, Monday, Tuesday, Wednesday, Thursday, Friday and Saturday effective 2015-07-23T00:00:00 from T16:00:00 to T17:00:00

你可以看到我有单词,时间和日期。我需要将格式应用于日期和时间,并将国际化应用于字符串。

代码是这样工作的

var result = '';
// get values as an array
var arrValue = value.split(' '), resultArr = [];
// iterate in each element
for (var i = 0; i < arrValue.length; i++) {
    // validate is a date
    if (moment(arrValue[i], moment.ISO_8601).isValid() && (arrValue[i].indexOf('T') != -1)) {
        // push into array
        resultArr.push(moment(arrValue[i]).format('L'));
        // validate is a time
    } else if (moment('0001-01-01' + arrValue[i], moment.ISO_8601).isValid() && (arrValue[i].indexOf('T') != -1)) {
        // push as a result the date
        resultArr.push(moment('0001-01-01' + arrValue[i]).format('LT'));
    } else {
        // push the string in the collection
        resultArr.push(sgI18NService.translate(['portfolio', 'activity-recurrence-field-' + arrValue[i]], arrValue[i]));
    }
}

,它工作良好(然后我连接字符串)。问题是,在IE不能正常工作,以识别一些字符串,它混淆了它们作为一个日期,例如,我分割字符串后,我得到了每天作为一个字符串,当我评估

moment('0001-01-01Thursday,', moment.ISO_8601).isValid()

我得到假在Chrome(这很好,因为星期四是一个字符串,而不是一个日期),但在IE我得到真。我检查过了,看起来它正在将无效日期转换为最小日期

Tue Jan 01 1901 00:00:00 GMT-0500

这个例子是在计算第二个if时。我有这样的问题,周四和周二的有效日期。我做错了什么?如何在IE中区分日期和时间字符串?

编辑:字符串是有限的,我有不同的字符串组合,但他们不是由用户输入。

由于我的输入字符串是有限的,而且我知道我将遇到的情况,所以我将字符串匹配为数字

/d/.test() 

for me

相关内容

  • 没有找到相关文章

最新更新