Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取日期和/或在JSON对象中检查日期?_Javascript_Json_Date_Object - Fatal编程技术网

Javascript 获取日期和/或在JSON对象中检查日期?

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

我有一个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 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脚本主机):

  • 将以下文本保存到名为test.js的文件中(将1396566000000替换为您自己的日期值)

    var日期=新日期(1396566000000); Echo(日期)

  • 在命令提示符下,运行:

    wscript test.js


  • 嗯,我不确定我是否理解或者你误解了。。。我知道如何进行功能检测,我知道这是一个日期,因为它作为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