使用输入中的字符串创建javascript日期对象
IE8和一些旧浏览器中的date对象有问题。在网站上,我有输入隐藏,我保持日期,并在更改后,新的日期应在该字段 在我的机器上一切正常,但在其他一些机器上我得到了使用输入中的字符串创建javascript日期对象,javascript,date,Javascript,Date,IE8和一些旧浏览器中的date对象有问题。在网站上,我有输入隐藏,我保持日期,并在更改后,新的日期应在该字段 在我的机器上一切正常,但在其他一些机器上我得到了nannan,这是我的代码: var date = new Date($('#curDate').val()); //date.setDate(date.getDate() - 7); var dateMsg = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.g
nannan
,这是我的代码:
var date = new Date($('#curDate').val());
//date.setDate(date.getDate() - 7);
var dateMsg = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
alert(dateMsg);
当我运行这个文件(php)时,在隐藏输入中,我得到了当前一周2013-03-25的星期一日期
在Win XP IE8上,此警报返回我NaN-N..
,在非常旧的mac上,我发现这是对象的问题。如何获取日期值并将其转换为javascript中的对象?永远不要使用新日期(某些字符串)
-这是不可靠的,因为它取决于用户的区域设置
自己将字符串分解为yy/mm/dd
组件,然后调用newdate(y,m-1,d)
切勿使用newdate(某些字符串)
-这是不可靠的,因为它取决于用户的区域设置
自己将字符串分解为其
yy/mm/dd
组件,然后调用newdate(y,m-1,d)
连字符问题
用斜杠(“/”)转换连字符(“-”)
或
你的连字符有问题 用斜杠(“/”)转换连字符(“-”) 或
您还可以使用新的日期(某些字符串)格式。这是可靠的。但是,日期字符串必须采用ISO格式,即yyyy/mm/dd。您也可以使用新的日期(某些字符串)格式。这是可靠的。但是,日期字符串必须采用ISO格式,即yyyy/mm/dd。您输入的日期格式是什么?大多数浏览器都无法识别。2013-03-25-YYYY-MM-DD处理了很多跨浏览器的日期解析问题,顺便问一下。您输入了什么日期格式?大多数浏览器都无法识别。2013-03-25-YYYY-MM-DD处理了很多跨浏览器的日期解析问题,顺便说一句。不明智的建议IMHO-转换为“斜杠”格式并不能保证独立于区域设置的解析。@Alnitak:日期解析几乎总是基于区域设置的。要以跨浏览器的方式解决这个问题,您需要使用
Date。UTC
nb:区域设置和TZ不是一回事。不明智的建议IMHO-转换为“斜杠”格式并不能保证独立于区域设置的解析。@Alnitak:日期几乎总是基于区域设置进行解析。要以跨浏览器的方式解决这个问题,您需要使用Date。UTC
nb:区域设置和TZ不是一回事。Date
构造函数也使用本地时区。@Bergi我说的不是时区,我说的是mm/dd/yy vs dd/mm/yyAh,好吗。然而OP使用的是YYYY-MM-DD格式,而不是YYYY-DD-MM:-)他的字符串变量使用的是这种格式,我们无法确定#curDate
中的内容Date
构造函数也使用本地时区。@Bergi我说的不是时区,我说的是MM/DD/yy vs DD/MM/yyAh,好的。然而OP使用的是YYYY-MM-DD格式,而不是YYYY-DD-MM:-)他的字符串变量使用了这种格式,我们不知道#curDate
var dateStr=$('#curDate').val();
var a=dateStr.split(" ");
var d=a[0].split("-");
var t=a[1].split(":");
var date = new Date(d[0],(d[1]-1),d[2],t[0],t[1],t[2]);
var date=new Date(convertToSlash($('#curDate').val()));
function convertToSlash(string){
var response = string.replace(/-/g,"/");
return response;
}