2017-10-18 210 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