我有"\/Date(1339638938087-0500)\/"
来自 Web 服务 api 格式的字符串。
使用java,我怎样才能把它放到一个org.joda.time.DateTime
变量中?
您需要提取这两个信息:
这假设该示例代表 1900 年 1 月 1 日当地时间午夜 - 因为 -2208967200000 部分代表 UTC 上午 6 点。
要将其转换为 Joda Time DateTime
,您应该提取两个部分(去掉括号外的所有内容,然后使用长度拆分它,或者找到中间的 +/- 符号)。
接下来,将第一部分解析long
为毫秒部分的 a。然后,解析第二部分——可能是小时、分钟并分别签名。(我假设它总是采用 xHHmm 的形式,其中 x 是符号,HH 是两位数的分钟数,mm 是两位数的小时数。)
DateTimeZone.forHoursMinutesOffset
使用或类似的方法为偏移量创建一个固定的时区。
最后,创造时间
new DateTime(millis, zone);
哦,然后踢任何制作如此可怕格式的人......
这看起来像 unix 时间戳
unix 时间戳是一种将时间跟踪为运行总秒数的方法。这个计数从 1970 年 1 月 1 日的 Unix 纪元开始
如果“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(如果“-”之后的第二部分是时区)