我有一个这样的字符串
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 中得到 false(这很好,因为星期四是一个字符串,而不是日期)但是在 IE 中我得到了 true。我检查了一下,看起来是将无效日期转换为最小日期
Tue Jan 01 1901 00:00:00 GMT-0500
那个例子是在评估第二个 if 时。我遇到了获取星期四和星期二有效日期的问题。 我做错了什么?如何在 IE 中区分日期和时间的字符串?
编辑:字符串是有限的,我有不同的字符串组合,但它们不是由用户输入的。
最佳答案
好吧,因为我的输入字符串是有限的,而且我知道我会遇到什么情况,所以我将字符串与数字匹配
/\d/.test()
对我有用
关于javascript - 使用 momentjs 检测字符串和时间之间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31597192/