Javascript 获取日期和/或在JSON对象中检查日期?
我有一个JSON对象,它可以(正在)存储日期(和/或任何其他JS对象),但我不确定一旦它在其中,如何将其取出。例如,我有这个示例代码,但它不起作用:Javascript 获取日期和/或在JSON对象中检查日期?,javascript,json,date,object,Javascript,Json,Date,Object,我有一个JSON对象,它可以(正在)存储日期(和/或任何其他JS对象),但我不确定一旦它在其中,如何将其取出。例如,我有这个示例代码,但它不起作用: for(var key in value){ if(value.hasOwnProperty(key)){ if(typeof value[key] == 'object'){ if(value[key].Date){ console.log('this is a da
for(var key in value){
if(value.hasOwnProperty(key)){
if(typeof value[key] == 'object'){
if(value[key].Date){
console.log('this is a date')
}
else{
console.log('not a date');
}
}
}
}
但是,它只保留return而不是date
。如果我用Firebug或WebKit中的开发者控制台检查JSON对象,我会在相应的JSON项中看到\uuuuuu proto\uuuuu:Date
。。。那么,我该如何取出或检查它呢
--编辑--
以下是我在调试器中看到的内容:
Object
->isADate: Fri Nov 26 2010 20:30:57 GMT-0800 (Pacific Standard Time)
--->__proto__: Date
->notADate: "some string"
--->__proto__: Object
下面是我正在创建的JSON:
var dateStorage = new storageLocker('date-test');
dateStorage.save({'isADate':new Date(),'notADate':'some string'});
这是我脚本这一部分的代码(http://github.com/oscargodson/storagelocker)
非常感谢!希望这能帮上更多的忙 您想看看这个: 基本上,“最安全的”——不是100%故障保护,但你应该没事——是做功能检测 但是,请确保您的JSON条目实际上是一个日期对象而不是字符串,在这种情况下,这将不起作用,您需要使用
new date()
或date.parse()
将其设置为日期对象
编辑:以下是您的2条评论:
JSON不允许以日期格式存储对象。所以,这里已经有了一个差异。要么你没有真正处理JSON对象,要么你没有按应该的方式处理它们
有关如何使用JSON.parse的reviver参数的信息,请参见本页的官方文档,因为日期应存储为字符串,然后“恢复”为日期对象
此外,该typeof returns对象并不一定意味着不处理字符串,例如:
typeof new String("test") // object
现在假设此时确实有一个Date对象,我不知道测试value[key].Date
会如何工作。在调试控制台中尝试,因为您有FireBug:
var t = new Date();
alert(t.Date) // undefined
alert(t.getMonth) // code of the function, so not undefined
alert(typeof t.getMonth != 'undefined') // true
因此,使用对
getMonth
、getDay
和其他测试的组合就可以做到这一点。如果您像我一样,在这里寻找一种方法来发现JSon日期值等于什么日期/时间,您可以按如下方式执行(使用wscript-Windows脚本主机):
嗯,我不确定我是否理解或者你误解了。。。我知道如何进行功能检测,我知道这是一个日期,因为它作为new date()放入JSON中,但我不知道如何通过JSON语法选择它。我尝试过的每件事都没有定义。。。希望这更有意义?简言之,我知道这是一个日期,我知道它是受支持的,它是一个使用typeof的对象,我可以通过web检查器查看它,我只是不知道选择日期的语法…@Oscar Godson:请查看我的编辑。请提供一个JSON片段。非常感谢!好的,我更新了,解释得很好。我会研究它,但我确实包含了更多的代码。请提供一个JSON片段,这样我们就可以确保它确实是有效的JSON,并且您看到的行为不是由于调试工具自动为您恢复对象造成的。
var t = new Date();
alert(t.Date) // undefined
alert(t.getMonth) // code of the function, so not undefined
alert(typeof t.getMonth != 'undefined') // true