Gag*_*ege 8 javascript iis internet-explorer date
我正在使用日期格式为"yyyy-mm-dd"的Javascript Date(字符串)构造函数.除非应用程序在运行IIS的测试VM上运行,否则构造函数在IE 9和Firefox中运行良好.如果它在VM上,在IE 9中它返回'NaN',但仍然在Firefox中正常工作.
var dateAsString = "2011-11-09";
var dateCreated = new Date(dateAsString);
Run Code Online (Sandbox Code Playgroud)
我假设服务器与客户端Javascript无关.有什么建议?
对于我们这些想知道如何用斜线替换连字符(又名破折号)的人:
new Date(dashToSlash(string));
Run Code Online (Sandbox Code Playgroud)
那使用这个功能:
function dashToSlash(string){
var response = string.replace(/-/g,"/");
//The slash-g bit says: do this more than once
return response;
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,有选择地将连字符转换为斜线(仅在Date()函数需要的位置)要比在我的代码中的每个地方替换日期格式要容易得多.
注意:您确实需要定义一个单独的"响应"变量,并为其指定替换操作结果的值.如果不这样做,则Chrome中的字符串将保持不变.这不是一个大问题,因为Chrome开头的连字符日期字符串没有问题.但还是......
我建议尝试一种更可靠的日期解析形式。下面的示例使用setFullYear(). IE 使用下面的代码会产生不同的结果吗?
/**Parses string formatted as YYYY-MM-DD to a Date object.
* If the supplied string does not match the format, an
* invalid Date (value NaN) is returned.
* @param {string} dateStringInRange format YYYY-MM-DD, with year in
* range of 0000-9999, inclusive.
* @return {Date} Date object representing the string.
*/
function parseISO8601(dateStringInRange) {
var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}
Run Code Online (Sandbox Code Playgroud)
来源: http: //jibbering.com/faq/#parseDate
| 归档时间: |
|
| 查看次数: |
13894 次 |
| 最近记录: |