2

我无法从 ac# datetime 创建 js 日期变量。我注意到 jquerys .val() 方法的一些奇怪行为。

输入元素保存日期信息,如下所示:

@Html.HiddenFor(t => t.Tasks[i].Task.Deadline, new { @class = "task-end", @Value = Model.Tasks[i].Task.Deadline.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds })

在javascript中,我这样做:

var date = new Date($("MyDateFromHiddenField").val());

将此日期写入控制台会给出无效日期。

如果我写信$("MyDateFromHiddenField").val()给控制台,我会得到1372854195130

用这个数字硬编码日期会给我一个有效的日期:

var date = new Date(1372854195130); <---Valid

出于某种原因, new Date() 不喜欢 .val() 方法。

示例:http: //jsfiddle.net/hZ7bm/1/

4

5 回答 5

3

问题是.val()返回一个字符串并new Date()需要一个数字。您可以将呼叫更新为:

var date = new Date(parseInt($("#myhidden").val(), 10));

更新版本位于http://jsfiddle.net/hZ7bm/2/

于 2013-09-05T06:41:22.487 回答
2

使用 parseInt 而不是将返回的字符串传递.val给 Date 构造函数。

var date = new Date(parseInt($("MyDateFromHiddenField").val(), 10));

作为一个字符串,它将是无效的:

new Date("1372854195130")
// Invalid Date
于 2013-09-05T06:40:24.793 回答
2

构造函数的参数Date应该是数字而不是字符串。按照其他人的建议尝试parseInt,或者可以尝试:

var date = new Date(+$("#myhidden").val());

+将字符串转换为数字

演示

于 2013-09-05T06:41:56.503 回答
2

输入字段中的值属于string数据类型。因此,您必须将其转换为integerusingparseInt(string, radix)Number(string)

var date = new Date(parseInt($("#myhidden").val(), 10));

或者

var date = new Date(Number($("#myhidden").val()));
于 2013-09-05T06:41:56.580 回答
0

尝试这个:

 var date = new Date(parseInt(1372854195130, 10));
  var curr_month = ('0' + (date.getMonth() + 1));
  var curr_date = ('0' + (date.getDate()));
  var curr_year = date.getFullYear();
于 2013-09-05T06:53:08.640 回答