【问题标题】:Java method to parse Date as MS JSON date format将日期解析为 MS JSON 日期格式的 Java 方法
【发布时间】:2014-05-01 13:58:44
【问题描述】:

Microsoft 使用如下所示的日期时间格式:\/Date(1399017480000-0000)\/

我想编写一个 Java 方法,将 Java 日期转换为 Microsoft 的日期时间格式。谁能指出解释如何做到这一点的资源?

【问题讨论】:

  • 你试过SimpleDateFormat吗?
  • 就我而言SimpleDateFormat 不执行这种转换。
  • 这根本不是“点网”格式,也不是 Microsoft 格式。它是众多 JSON 格式之一。
  • @Daniel:不。您可以编写自己的转换器,插入 NodaTime.Serialization.JsonNet,但您必须将毫秒值解析为整数等。(没有 Noda Time 模式处理它的格式。)

标签: java json.net


【解决方案1】:

假设你只是在谈论java.util.Date,那么简单如下:

public static String toJson(Date date) {
    return "\\/Date(" + date.getTime() + "-0000)\\/";
}

(假设反斜杠确实应该是字符串的一部分……不清楚你是否真的想要它们,但你可以很容易地删除它们。)

基本上,字符串的第一部分只是自 Unix 纪元以来的毫秒数,它也是 java.util.Date 中的值,通过 getTime() 访问。

“0000”位是 UTC 偏移量,但由于 java.util.Date 没有时区或偏移量的概念,您可以只使用 0000,您最终会代表正确的时间点。如果您从 java.util.Calendar 值开始,您也可以转换偏移量,如果您真的想要的话。

【讨论】:

  • 非常感谢您的回答。我知道 Java 没有 TimeZone 的概念,但你的意思是当我将日期发布到 ASP.Net 服务器时,我不必关心时区吗?
  • @SandahAung: Java 确实有时区的概念(看java.util.TimeZone;只是java.util.Date没有。至于你是否需要担心时区 - 这对上下文非常敏感。时区对您发布的数据是否重要?
  • 是的。我正是这个意思。 Java 的日期没有。看起来服务器发现知道客户端的正确时区很有用,因为它可以使用该信息来执行某些任务,例如在适当的时间发送警报。
  • Date 很老了; Java 现在有更好的与日期相关的类。如果您想了解时区,Instant 可能更合适。 (或者如果没有,LocalDateTime。)
  • @gidds:这个答案也很老了!但对于时区感知类型,我建议使用ZonedDateTime 而不是LocalDateTimeInstant - 它们都不知道时区。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 2018-01-09
  • 1970-01-01
相关资源
最近更新 更多