【问题标题】:PHP DateTime to Java DatePHP DateTime 到 Java 日期
【发布时间】:2012-01-14 20:02:05
【问题描述】:

我有一个 PHP Web 服务将 JSON 响应发送回我的 Java 客户端。其中一个字段是 DateTime 值。但是,我在将序列化的 PHP 日期/时间转换为 Java 日期时遇到问题。

例如,这是存储在我的数据库中的日期:

2011-12-07 15:03:01

这是它在 JSON 响应中的编码方式:

1323288181

我怀疑这将是自 Unix 纪元以来的毫秒数,但是当我使用该给定值构造 Java Date 时,日期结果如下:

Fri Jan 16 01:34:48 CST 1970

显然它不是从 1970 年 1 月 1 日午夜开始的毫秒数。

我该怎么做?

【问题讨论】:

标签: java php json web-services


【解决方案1】:

看起来这是自 Unix 纪元以来的 - 因此,在将值传递给 Date 构造函数时,只需将值乘以 1000。

请注意,Date.toString() 将始终使用系统时区,但 Date 确实代表一个瞬间,因此它没有时区。

如果您要对日期和时间进行重要操作,我强烈建议您使用 Joda Time 而不是 java.util 中的类。

【讨论】:

  • 还要确保该值必须是 long 类型,例如:System.out.println(new Date(1323288181l*1000l));
  • 是的,它是几秒钟。我不敢相信我忽略了这一点!当然也计划使用 Joda Time。谢谢,乔恩。
【解决方案2】:

我认为这是一个 unixtimestamp。使用这个在线转换器:http://www.onlineconversion.com/unix_time.htm

下面是如何转换它的示例(在 java 中): http://www.epochconverter.com/

【讨论】:

    【解决方案3】:

    我正在使用 1970-01-01T00:00:00Z 作为 JSON 中的日期时间格式, 然后我确保双方都正确解析它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-25
      • 2011-10-08
      • 2013-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多