2017-03-31 98 views
-1

我有以下日期爲一個字符串這個字符串的日期格式是什麼?

2017-03-01T10:15:41-0800 

,我試圖用

new Date().parse('dd/mm/yyyy', dateString) 

然而使用,我想不通的格式。

+1

Date類中沒有這樣的解析方法。 Java字符串被雙引號包圍。所以代碼甚至不能編譯。而這種模式顯然不是你要給的那個。 Google爲「如何用Java解析日期」。你會得到很多相關的結果。 –

+0

@JBNizet我認爲這可能是一個misstagging的情況,因爲這是有效的groovy – weston

+1

@ user304966這實際上是一個常規問題? – weston

回答

1

dateString和日期格式不匹配。 Groovy的風格:

def dateString = "2017-03-01T10:15:41-0800" 
new Date().parse("yyyy-MM-dd'T'HH:mm:ssZ", dateString) 

結果:

Wed Mar 01 21:15:41 EAT 2017 

你可以參考here有關日期格式模式的更多信息。

1

考慮使用SimpleDateFormat

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

class Main { 
    public static void main(String[] args) { 
    try { 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssX"); 
     Date parsed = format.parse("2017-03-01T10:15:41-0800"); 
    } catch (ParseException e){ 
     e.printStackTrace(); 
    } 
    } 
} 

試試吧here!

+0

這是在Groovy中解析日期的一種非常尷尬的方式。即使在Java中,Java 8的日期類也不如此。 – BalRog

+0

當我回答這個問題時,只有標籤java沒有Groovy。 – shash678

0

如果可以的話,和你自己的Java 8,避免java.util.Date,並將其解析到新java.time的一類:

import java.time.* 
import java.time.format.DateTimeFormatter 

def dateString = "2017-03-01T10:15:41-0800" 

def date = OffsetDateTime.parse(dateString, 
           DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")) 

如果你再想這個時候在另一個區域(即:UTC ),你可以這樣做:

def utcDate = date.atZoneSameInstant(ZoneOffset.UTC)