在Javascript中将字符串更改为日期不起作用

时间:2013-08-01 13:31:58

标签: javascript datetime

我正在做的事情:

  var dDate = document.getElementById('<%= date.ClientID %>').value;
              alert(dDate); // 2013/08/14
              dDate = dDate.replace("-", "/");
              dDate = dDate.replace("-", "/");
              var Date = new Date(dDate);  // JAVASCRIPT ERROR HERE...
              alert(Date);

我看到简单的例子,但不确定为什么它不能在这里工作?如果你能告诉我如何从date.ClientID添加+1日期,那将会很有帮助。

5 个答案:

答案 0 :(得分:3)

问题在于:

          var Date = new Date(dDate);  // JAVASCRIPT ERROR HERE...

您已使用本地变量隐藏了全局“Date”构造函数。将您的变量名称更改为其他名称,它应该更好。

在JavaScript函数中,函数体的所有var声明都“发生”,好像它们都在顶部。声明的赋值部分发生在实际找到声明的代码中,但声明 - 将命名变量添加到函数作用域,换句话说 - 发生在顶部。因此,当您尝试在初始化的右侧调用“Date”构造函数时,您尝试使用“Date”变量的值,此时此变量为undefined

此外,您的.replace()来电是倒退的,您不需要两个:

dDate = dDate.replace(/\//g, '-');

有些浏览器不需要(Firefox可以使用斜杠)。

编辑 - 哦,并且在给定日期之后的某一天获得日期很简单:

var nextDay = new Date( someDate.getTime() );
nextDay.setDate( nextDay.getDate() + 1 );

答案 1 :(得分:1)

你有错误的替换方式。

 var dDate = document.getElementById('<%= date.ClientID %>').value;
 alert(dDate); // 2013/08/14
 dDate = dDate.replace("-", "/");
 dDate = dDate.replace("-", "/");

如果你在这里做了另一个alert,你会看到它仍在说2013/08/14。尝试:

 dDate = dDate.replace("/", "-");

(只需要一个)并重试。

关于问题的第二部分,请参阅Add days to JavaScript Date

 var today = new Date();
 var tomorrow = new Date();
 tomorrow.setDate(today.getDate()+1);

答案 2 :(得分:1)

根本不做var Date = new Date()。看起来您可能会覆盖默认的javascript Date()对象。相反,尝试类似var date = new Date()

的内容

答案 3 :(得分:0)

看起来您必须更改替换字符顺序:

dDate = dDate.replace("/", "-");
dDate = dDate.replace("/", "-");

答案 4 :(得分:0)

替换应该像这样:

dDate = dDate.replace(/\//g, "-");