为什么javascript将我的日期变成一种数字

时间:2014-07-16 13:14:31

标签: javascript

当我尝试将我创建的Date()变量传递给我正在处理的函数时,我遇到了一个问题,如果我在函数中放入以下内容我已经将变量传递给了这就是我所看到的。

 console.log("quickScreenCompletedDate: " + typeof quickScreenCompletedDate);
 console.log("quickScreenCompletedDate: " + quickScreenCompletedDate);

这是输出

"quickScreenCompletedDate: number" 
"quickScreenCompletedDate: 1403409600000"

然而,当我创建变量时,我将其创建为Date()类

var completedDate = Date.parse('@Model.CompletedDate');

然后我这样调用函数。

 previousDenialDate_ChangeHandler(isChild, completedDate);

完整性这里是函数定义

function checkIfShouldShowPreviouslyDeniedMessage(isChild, quickScreenCompletedDate) {

问题是我需要在compeletedDate var上做一些逻辑并且工作得很好,因为你可以看到我得到的数字是1403409600000,现在,我还需要向用户显示这个,当我尝试调用失败的toDateString(),因为它不再是日期对象。我错过了什么导致了这一点。

由于

3 个答案:

答案 0 :(得分:1)

Javascript将日期存储为自1970年1月1日以来的毫秒数。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

您以毫秒为单位进行数学计算,然后使用toDateString()将其转换为日期,以将其作为日期打印,或者您可以创建新的Date并以毫秒为单位传递给构造函数。

示例

new Date(1403409600000);

答案 1 :(得分:1)

为什么不尝试new Date

new Date(year, month, day [, hour, minute, second, millisecond ])

在您的情况下尝试

var completedDate = new Date('@Model.CompletedDate.Year','@Model.CompletedDate.Month','@Model.CompletedDate.Day');

var completedDate = new Date('@YourModelVariable');

如果您使用Date.parse小心时区问题

var d = Date.parse("10/22/2014");

请参阅here以获取Date.parse

的文档

答案 2 :(得分:1)

来自Date.parse()

的文档
  

Date.parse()方法解析日期的字符串表示形式,并返回自1970年1月1日00:00:00 UTC以来的毫秒数。

所以:

var completedDate = Date.parse('2014-07-01');

返回1404172800000(类型编号)


相反,请执行:

var completedDate = new Date('@Model.CompletedDate');

将为您提供实际的Date对象实例。