2017-10-18 230 views
-1

如何解析这个日期格式:日期解析。我如何解析这个日期格式?

“/日期(1514728800000 + 0300)/”

我不知道这个数字的含义是什么,或者说,+的标志。

+2

从哪里得到这些值? –

+0

从我无法访问并且无法更改的Web服务 –

+0

不知道关于+0300可能是时区或其他内容。 –

回答

1

部分回答:号码是epoch time

这是自1970年1月1日UTC以来的秒数。
您可以将此值传递给java.util.Date的构造函数,该函数将为您提供一个具有正确值的Date对象。

+0300不清楚,也许是对不同时区的引用。

1

林不知道有关+0300,但你可以一个划时代的时间转换为Date具有以下功能:

Date date = new Date(Long.parseLong(myDateToParse.replaceAll("[^\\d-]", ""))); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss", Locale.DEFAULT); 
+1

这将创建一个'长'值等于'15147288000000300',但最后的数字('0300')不是millis值的一部分,它不应该被传递到'Date'构造函数(你的代码在年** 481968 **中创建一个日期!) - 你应该只传递'1514728800000'。 'Locale.DEFAULT'不存在,也许你的意思是'Locale.getDefault()'? – 2017-10-18 14:47:14

+0

@Hugo真的,我的意思是Locale.getDefault(),感谢您的输入。至于+ 300,我还必须说你是对的。我在我的例子中试图做的是解析一个简单的时代(没有+0300)。您可以简单地删除+0300并将3小时(使用所需的逻辑)添加到新日期 –

+0

嗯,如果需要,您可以随时编辑您的答案以修复/改进它们。 – 2017-10-18 15:12:38

1

下面是分析此假设你有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