我有一个像这样的字符串
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