我正在处理网站内容,其中包括几种类型的日期字符串(例如Atom / RSS Feed)。我想知道是否有一个库来规范化这些字符串,或者是否有人将宝石藏在这个目的中。
以下是我想要实现的一个例子:
2014-02-14T12:11:03-05:00
2014-02-14T02:08:00Z
变为:
// Only an example format, all that matters is they're the same
YYYY-MM-DD - HH:MM:SS
让我知道你的建议,任何格式化工具都将不胜感激:)我google了一段时间,找不到任何东西!
哦,即使我标记了这个Java(我正在使用它),也可以随意发布其他语言的答案 - 我确信我或者线程上的某个人可以帮助转换它们。 / p>
答案 0 :(得分:1)
AFAIK,没有以任何语言开发的这种API,它接受一个人感兴趣的日期字符串输入并识别和/或返回其日期格式字符串。
在我看来,内容/ Feed生成器应该让接收者知道,它将数据保存在具有 date_field
和type="date"中> format="YYYY-MM-DD - HH:MM:SS"
(例如)。这实际上有助于接收器API或渲染器(浏览器),如果需要,将其转换为本地/区域格式,然后应用。
这种格式指令可以在移动浏览器的XML数据中看到。我的观察和实践是数字格式,字母数字组合。没有检查日期。我不确定这是否还在实践中。
<input type="text" name="m0" maxlength="22" format="*N" />
让我们希望有人在日期中实现这一点。
答案 1 :(得分:1)
将日期字符串从格式转换为其他格式(例如:2014-02-14T12:11:03-05:00至2014-02-14 - 12:11:03):
SimpleDateFormat oldFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date d = old.parse("2014-02-14T12:11:03-05:00");
SimpleDateFormat destFormat = new SimpleDateFormat("yyyy-MM-dd - HH:mm:ss");
destFormat.format(d);
答案 2 :(得分:1)
如果通过“normalize”表示将所有日期时间字符串转换为单个一致,那么您肯定应该按照第一对示例行中显示的方式进行。这两行都使用ISO 8601标准。虽然还有其他日期格式,但ISO 8601是最明智和最有用的。
您需要的“gem”是Java的开源免费Joda-Time库。或者在Java 8中使用新的java.time。*包,其灵感来自Joda-Time并由JSR-310定义。
Joda-Time和java.time都使用ISO 8601作为默认格式,并且可以直接解析这些字符串。对于其他格式,您可以为解析或生成字符串定义格式化程序。
在“joda”中搜索StackOverflow,找到许多类似的问题和答案。
答案 3 :(得分:0)
检查javadocs java.text.SimpleDateFormat它描述了你需要的一切。
答案 4 :(得分:0)
将其转换为系统接受的时间戳,然后转换为人类可读的时间戳。这是一个php示例。
date("m/d/Y", strtotime($date))
以下$date
的值会产生以下标准化值
6/1/74 => 06/01/1974
6/1/1974 => 06/01/1974
Jan 1 2013 => 01/01/2013