JSON日期解析的问题

时间:2010-09-22 02:38:00

标签: javascript jquery json

我有一个JSON源,可以发送我在网页上显示的数据。问题是, 它返回的日期部分是某种javascript对象。

请查看示例回复。

dteInstallDate
 date   16
 day    4
 hours   0
 minutes   0
 month   8
 nanos   0
 seconds   0
 time   1284566400000
 timezoneOffset -480
 year   110

当我尝试将对象打印为console.log时。它打印

data.resource_data.dteInstallDate.toString()
[object Object]

我的问题是我想将这个JSON响应设置为我的Jquery隐藏输入,它将数据更新为Object Object。

$("div#pmItems").find("#dteInstallDate").val(data.resource_data.dteInstallDate);

我正在考虑如何将Date对象从服务器端发送到Javascript。我应该将其转换为字符串还是将其作为长值发送。你认为哪一个更好?

我有Spring MVC作为我的后端

1 个答案:

答案 0 :(得分:2)

你有一个JSON源,对吗? JSON只是用于跨语言通信目的的标准标准。虽然JSON对象与简写声明的Javascript对象具有相同的符号,但它实际上只是任何语言中任何对象的表示。如果您要获得如下所示的JSON Feed:

{
    "dteInstallDate":
    {
        "date"      : 16,
        "day"       : 4,
        "hours"     : 0,
        "month"     : 8,
        "nanos"     : 0,
        "seconds"   : 0,
        "time"      : 1284566400000,
        "timezoneOffset": -480,
        "year"      : 110
    }
}

在Javascript中,您所要做的就是调用dteInstallDate.time属性并将其放入新的Date()对象中。一个工作的例子在这里:

http://jsfiddle.net/kAxfY/

正如你所看到的,时间稍微偏离了他们所说的......我试着用timezoneOffset来愚弄它以使其更准确,但我做不到。通常情况下,时区偏移在几分钟内完成,因此-480意味着它比GMT慢-480/60 = -8小时。有关Javascript Date对象的更多信息,请参阅此页:

http://www.w3schools.com/jsref/jsref_obj_date.asp

编辑:或许还有更多关于帖子的内容......只要有足够的信息可以创建足够的信息,将这些数据发送到浏览器并不重要Javascript中的Date对象。创建日期对象的四个选项是:

//no argument means it will create a date representing the local time on the machine on which the browser is running
var d = new Date();

//milliseconds
var d = new Date(1284566400000);

//a string
var d = new Date("October 13, 1975 11:13:00");

//giving precise values for each unit of time
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);