0

我有"\/Date(1339638938087-0500)\/"来自 Web 服务 api 格式的字符串。

使用java,我怎样才能把它放到一个org.joda.time.DateTime变量中?

4

3 回答 3

2

您需要提取这两个信息:

  • -2208967200000:自 unix 纪元以来的毫秒数(UTC 时间 1970 年 1 月 1 日)
  • -0600:从 UTC 偏移

这假设该示例代表 1900 年 1 月 1 日当地时间午夜 - 因为 -2208967200000 部分代表 UTC 上午 6 点。

要将其转换为 Joda Time DateTime,您应该提取两个部分(去掉括号外的所有内容,然后使用长度拆分它,或者找到中间的 +/- 符号)。

接下来,将第一部分解析long为毫秒部分的 a。然后,解析第二部分——可能是小时、分钟并分别签名。(我假设它总是采用 xHHmm 的形式,其中 x 是符号,HH 是两位数的分钟数,mm 是两位数的小时数。)

DateTimeZone.forHoursMinutesOffset使用或类似的方法为偏移量创建一个固定的时区。

最后,创造时间

new DateTime(millis, zone);

哦,然后踢任何制作如此可怕格式的人......

于 2012-07-06T19:16:23.573 回答
0

这看起来像 unix 时间戳

unix 时间戳是一种将时间跟踪为运行总秒数的方法。这个计数从 1970 年 1 月 1 日的 Unix 纪元开始

于 2012-07-06T19:14:00.330 回答
0

如果“2208967200000”是自 1970 年 1 月 1 日 00:00:00 以来的毫秒数,您可以在 Date(time) 的构造函数中使用它;

String dateStr="Date(-2208967200000-0600)";
String timeInMillis=dateStr.Split("-")[1];
String utcStr=dateStr.Split("-")[2].Substring(0,4);
Date d=new Date(Long.parseLong(timeInMillis));

如果需要,您可以处理 utcStr(如果“-”之后的第二部分是时区)

于 2012-07-06T19:22:05.770 回答