使用输入中的字符串创建javascript日期对象

使用输入中的字符串创建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

IE8和一些旧浏览器中的date对象有问题。在网站上,我有输入隐藏,我保持日期,并在更改后,新的日期应在该字段

在我的机器上一切正常,但在其他一些机器上我得到了
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;
    }