关于JavaScript new Date()和Date.parse()

Chi*_*esh 16 javascript date

这是我的代码:

  var exampleDate='23-12-2010 23:12:00';  
  var date=new Date(exampleDate);//returns invalid Date
  var date1=Date.parse(exampleDate);//returns NAN
Run Code Online (Sandbox Code Playgroud)

我想将上面的字符串转换为日期.所以我已经编写了一个代码,如上所示.

此代码在运行良好IEOpera,但date变量返回我一个无效的日期和date1正在恢复NANmozilla Firefox,我该怎么办?

cas*_*nca 25

示例中的字符串不是浏览器识别的任何标准格式.ECMAScript规范要求浏览器只能解析一种标准格式:

格式如下: YYYY-MM-DDTHH:mm:ss.sssZ

此格式包括仅限日期的表单:

YYYY

YYYY-MM

YYYY-MM-DD

它还包括附加了可选时区偏移的仅限时间的表单:

THH:mm

THH:mm:ss

THH:mm:ss.sss

还包括"日期时间",其可以是上述的任何组合.

如果String不符合该格式,则该函数可以回退到任何特定于实现的启发式或特定于实现的日期格式.无法识别字符串或包含格式为String的非法元素值的日期将导致Date.parse返回NaN.

所以在你的例子中,使用2010-12-23T23:12:00是唯一可以保证工作的字符串.在实践中,大多数浏览器还允许格式的日期DD Month YYYYMonth DD, YYYY,所以像串23 Dec 2010Dec 23, 2010还可以工作.


Rom*_*ani 6

以上格式仅在IE和Chrome中受支持.

所以尝试其他格式.以下是一些格式和支持浏览器.

<script type="text/javascript">

//var dateString = "03/20/2008";  // mm/dd/yyyy [IE, FF]

 var dateString = "2008/03/20";  // yyyy/mm/dd [IE, FF]
// var dateString = "03-20-2008";  // mm-dd-yyyy [IE, Chrome]
// var dateString = "March 20, 2008";  // mmmm dd, yyyy [IE, FF]
// var dateString = "Mar 20, 2008";  // mmm dd, yyyy [IE, FF]

// Initalize the Date object by passing the date string variable
var myDate = new Date(dateString);
alert(myDate); 
</script>
Run Code Online (Sandbox Code Playgroud)

  • 这不应该是公认的答案,请参阅casablancas的回答 (2认同)