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