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

标签 javascript internet-explorer datetime internationalization 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 中得到 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/

相关文章:

c++ - 修改IE的下载日志

html - 下拉导航不起作用,即 7?

python - 如何根据日期时间(每 15 分钟)删除行?

javascript - 克隆表单,添加新的每一个

javascript - 使用 Math.random 时如何避免获得两个相同的数组?

javascript - 滚动功能看不到整个页面

internet-explorer - 是否有适用于 IE 的油脂猴子?或者,如何让网站使用 MSXML6 而不是 MSXML5?

C++ 日期时间解析

c# - 如何在 C# 中将 double 值转换为 DateTime?

javascript - 动态添加到屏幕输入字段并在 ionic cordova (angularjs) 中求和它们的(数字)内容