Javascript 检查字符串是否为有效日期的函数
Javascript function to check if string is a valid date
我知道这个问题已经被问过好几次了,但我问这个问题是因为在网上搜索了几个小时后,我还没有找到一个不包括使用 Javascript 库的可行解决方案。
我只是在寻找一种方法来测试字符串是否为有效日期。我正在绑定从 C# (JSON.NET) 传递的 Javascript 中的数据。传回的有效日期时间格式为“2083-01-01T00:00:00”。我发现的所有函数都说这是无效的,因为它们不包括允许的时间戳部分,或者它们不够严格,并说这个字符串 'Testing 21215' 是有效日期。
我可以在不使用库的情况下验证此格式的解决方案是什么?
如果您保证格式始终采用该 ISO 标准格式,那么您可以使用正则表达式来测试字符串结构。如果你愿意,你可以详细了解这个,或者试试下面的方法。
var dateRegexp = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/
var matches = dateString.match(dateRegexp)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
可能还有其他截然不同的方法。我的首选方法是尝试使用新的 Date(string) 方法;如果解析正确,那么您可以将其转换回 ISO 字符串
var dateString = "2016-03-18T00:00:00";
var date = new Date(dateString);
console.log(date.toISOString());
但是,您可能需要了解这对国际用户的影响。
我知道这个问题已经被问过好几次了,但我问这个问题是因为在网上搜索了几个小时后,我还没有找到一个不包括使用 Javascript 库的可行解决方案。
我只是在寻找一种方法来测试字符串是否为有效日期。我正在绑定从 C# (JSON.NET) 传递的 Javascript 中的数据。传回的有效日期时间格式为“2083-01-01T00:00:00”。我发现的所有函数都说这是无效的,因为它们不包括允许的时间戳部分,或者它们不够严格,并说这个字符串 'Testing 21215' 是有效日期。
我可以在不使用库的情况下验证此格式的解决方案是什么?
如果您保证格式始终采用该 ISO 标准格式,那么您可以使用正则表达式来测试字符串结构。如果你愿意,你可以详细了解这个,或者试试下面的方法。
var dateRegexp = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}$/
var matches = dateString.match(dateRegexp)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
可能还有其他截然不同的方法。我的首选方法是尝试使用新的 Date(string) 方法;如果解析正确,那么您可以将其转换回 ISO 字符串
var dateString = "2016-03-18T00:00:00";
var date = new Date(dateString);
console.log(date.toISOString());
但是,您可能需要了解这对国际用户的影响。