我将Doctrine 2创建的JSON响应作为服务器端的日期时间实体,并通过zend framework的Zend_Json :: encode($ stores)方法编码为JSON:
{
"birthdate":
{"date":"2011-08-19 00:00:00","timezone_type":3,"timezone":"Europe\/Berlin"}
}
我需要使用这个JSON为我的Extjs数据网格创建一个新的Date(),但我无法弄清楚如何操作JSON响应。假设我有一个JSON商店,我可以访问birthdate对象,新的Date(birthdate.date)给出“Date {Invalid Date}”。new Date(“date”:“2011-08-19 00:00:00”)给出相同的错误,但新的日期(“日期”:“2011-08-19”)工作正常。 请告诉我如何从我的JSON商店创建日期对象。
答案 0 :(得分:2)
您可以使用以下代码解析日期
Date.parseDate("2011-08-19 00:00:00", "Y-m-d h:i:s");
根据ExtJS 4.0,方法更改为parse
Ext.Date.parse("2011-08-19 00:00:00", "Y-m-d h:i:s")
答案 1 :(得分:1)
该字符串不是Date
构造函数或Date.parse
可以理解的内容。但是,它可以理解“YY-MM-DD”部分,所以如果这是足够的粒度,你可以这样做:
var data = {
"birthdate": {
"date": "2011-08-19 00:00:00",
"timezone_type": 3,
"timezone":"Europe\/Berlin"
}
};
// just parse the 'YY-MM-DD' part
new Date(data.birthdate.date.split(' ')[0]);
<小时/> 编辑:当我说格式无法解析时,我的意思是以跨浏览器的方式。例如,最新的Chrome可以很好地理解字符串,而最新的FF则不然。 “YY-MM-DD”部分应该是充足的跨浏览器(尽管显然可以测试和验证)。
答案 2 :(得分:0)
你试过Date.parse吗? https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse
如果未解析,则必须重新格式化字符串格式。
答案 3 :(得分:0)
您必须解析字符串以获取Date对象(see here):
var yourDate = Date.parse("2011-08-19 00:00:00");