我的JSON字符串包含一个返回此值的日期字段:
"2009-04-04T22:55:16.0000000-04:00"
我对仅解析日期分隔而不是时间解析特别感兴趣。我尝试使用reviver函数,但有趣的是,从未调用过reviver函数!(在Firefox上试用)
这是我要完成的代码:
var Site = {
.....
dateReviver: function(key, value) {
var a;
if (typeof value === 'string') {
a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+a[5], +a[6]));
}
}
return value;
},
loadArticle: function(id) {
....
proxy.getArticle(id, function(response) {
var data = JSON.parse(response.result, Site.dateReviver);
....
});
}
};
loadArticle
永不调用JSON.parse dateReviver
。
我花了一整天,但没有运气!有人可以帮我吗?
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(Z|([+\-])(\d{2}):(\d{2}))$/
如果时区数字不为零,则您可能要在解析和/或转换为UTC之后实际修改日期,以遵守时区。
<!-- saved from url=(0014)about:internet -->
<html>
<head>
<script src="http://www.json.org/json2.js"></script>
<script type="text/javascript" src="http://ajax.Microsoft.com/ajax/jQuery/jquery-1.3.2.js"></script>
<script>
$(function () {
// a mock proxy to return some json to play with
var proxy = {
getArticle: function(id, foo) { foo({
result: '["2009-04-04T22:55:16.0000000-04:00"]'
}); }
};
// the origial Site object, with the fixed regex
var Site = {
dateReviver: function(key, value) {
var a;
if (typeof value === 'string') {
a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)(Z|([+\-])(\d{2}):(\d{2}))$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+a[5], +a[6]));
}
}
return value;
},
loadArticle: function(id) {
proxy.getArticle(id, function(response) {
var data = JSON.parse(response.result, Site.dateReviver);
// put the parsed JSON date on the page
$("#output").html(data[0].toString());
});
}
};
// try out our Site object
Site.loadArticle();
});
</script>
</head>
<body>
<div id="output"></div>
</body>
</html>
我在浏览器中得到以下指示成功解析的信息:
Sat Apr 4 15:55:16 PDT 2009
下面是SimpleDateFormat的设置。 下面是开发人员文档中可解析日期字符串的可能差异列表。正如您所看到的,它们中没有一个在时区中有冒号。 我的第二个问题是当我得到一个时区设置为Z的日期字符串时,这是将时区设置为GMT的标准,相当于0000。然而,我又得到了一个ParseException。下面是日期字符串的一个示例。 提前致谢
问题内容: 我的日期格式为“ yyyy-MM-dd’T’HH:mm:ss.sssZ”。例如,日期为“ 2018-07-17T09:59:51.312Z”。我正在使用下面的代码来解析Java中的String。 这给了我“无法解析的日期:”例外。谁能告诉我该怎么做? 问题答案: 您忘了在 那会做的工作
问题内容: 我想使用joda库(在scala中,但应该与java相同)解析DateTime。 来源看起来像 在Java中,这看起来像 不幸的是,这不起作用,但会引发异常: 为什么不起作用?当然,我可以忽略“ CEST”部分,而只分析其余部分,但是有时在输入中“ CEST”可以用“ CET”代替,所以我不想忽略它。 问题答案: 问题是因为区域名称短而并非唯一。请参阅DateTimeFormatter
问题内容: 我有一个日期字符串,其格式为‘2009/05/13 19:19:30 -0400’。似乎Python的早期版本可能在strptime中支持尾随时区规范的%z格式标签,但2.6.x似乎已将其删除。 将这个字符串解析为datetime对象的正确方法是什么? 问题答案: 我有一个日期字符串,其格式为‘2009/05/13 19:19:30 -0400’。似乎Python的早期版本可能在str
问题内容: 如何将下面的日期字符串解析为一个Date对象? 引发异常… 问题答案: 模式是错误的。您有3个字母的天的缩写,因此必须为。您有3个字母的月份缩写,因此必须为。由于这些日和月的缩写对语言环境敏感,因此您也希望将语言环境明确指定为英语,否则它将使用平台默认语言环境,而语言环境本身可能不是英语。 这在这里打印 根据我的时区是正确的。 如果您不想使用代替,我也会重新考虑。阅读javadoc以获
问题内容: 有没有一种简单的方法可以在Python中解析HTTP日期字符串?根据该标准,有几种格式化HTTP日期字符串的方法。该方法应该能够处理此问题。 换句话说,我想将“ Wed,23 Sep 2009 22:15:29 GMT”之类的字符串转换为python时间结构。 问题答案: 如果需要对象,可以执行以下操作: