日期解析。我如何解析这个日期格式?
部分回答:号码是epoch time。
这是自1970年1月1日UTC以来的秒数。
您可以将此值传递给java.util.Date的构造函数,该函数将为您提供一个具有正确值的Date
对象。
+0300不清楚,也许是对不同时区的引用。
林不知道有关+0300,但你可以一个划时代的时间转换为Date具有以下功能:
Date date = new Date(Long.parseLong(myDateToParse.replaceAll("[^\\d-]", "")));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.DEFAULT);
这将创建一个'长'值等于'15147288000000300',但最后的数字('0300')不是millis值的一部分,它不应该被传递到'Date'构造函数(你的代码在年** 481968 **中创建一个日期!) - 你应该只传递'1514728800000'。 'Locale.DEFAULT'不存在,也许你的意思是'Locale.getDefault()'? – 2017-10-18 14:47:14
@Hugo真的,我的意思是Locale.getDefault(),感谢您的输入。至于+ 300,我还必须说你是对的。我在我的例子中试图做的是解析一个简单的时代(没有+0300)。您可以简单地删除+0300并将3小时(使用所需的逻辑)添加到新日期 –
嗯,如果需要,您可以随时编辑您的答案以修复/改进它们。 – 2017-10-18 15:12:38
下面是分析此假设你有unixtimestamp_zoneoffset
String inputStr = "1514728800000+0300";
String[] splitStr = inputStr.split("[+-]");
String offsetSign = inputStr.indexOf("+")>0 ? "+" : "-";
ZonedDateTime captureTime = Instant.ofEpochMilli(Long.valueOf(splitStr[0])).atZone(ZoneOffset.of(offsetSign+splitStr[1]));
代码
返回的值为2017-12-31T17:00 + 03:00
从哪里得到这些值? –
从我无法访问并且无法更改的Web服务 –
不知道关于+0300可能是时区或其他内容。 –