gpt4 book ai didi

javascript - 获取日期和/或在 JSON 对象中检查它?

转载 作者:行者123 更新时间:2023-11-29 22:37:58 28 4
gpt4 key购买 nike

我有一个可以(正在)存储日期(和/或任何其他 JS 对象)的 JSON 对象,但我不确定一旦它在其中如何将其取出。例如,我有这个示例代码,但它不起作用:

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');
}
}
}
}

但是,它只是保持返回不是日期。如果我使用 Firebug 或 WebKit 中的开发人员控制台检查 JSON 对象,我会在相应的 JSON 项中看到 __proto__: 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)

storageLocker.prototype.save = function(value){
var json = JSON.parse(localStorage.getItem(this.catalog));
if(json == null){json = {};}
for(var key in value){
if(value.hasOwnProperty(key)){
json[key] = value[key];
console.log(value[key].Date);
if(typeof value[key] == 'object'){
if(value[key].Date){
console.log('this is a date')
}
else{
console.log('not a date');
}
}
}
}
localStorage.setItem(this.catalog,JSON.stringify(json));
return this;
}

非常感谢!希望这对您有所帮助!

最佳答案

您想看这个:How to know if an object is a date or not with JavaScript

基本上“最安全”——不是 100% 故障安全但你应该没问题——是进行特征检测。

但是,请确保您的 JSON 条目确实是一个日期对象而不是字符串,在这种情况下,这将不起作用,您需要使用 new Date()Date.parse() 使其成为日期对象。

编辑:根据您的 2 条评论:

JSON 不允许您以日期格式存储对象。因此,这里已经存在差异。您要么没有真正处理 JSON 对象,要么没有按照应有的方式处理它们。

有关使用 JSON in JavaScript 的官方文档,请参阅此页面有关如何使用 JSON.parse 的 reviver 参数的信息,因为日期应该存储为字符串,然后“恢复”到 Date 对象。

此外,typeof 返回对象并不一定意味着您不处理字符串,例如:

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

因此,使用 getMonthgetDay 和其他测试的组合可以达到目的。

关于javascript - 获取日期和/或在 JSON 对象中检查它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276276/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com