我有以下日期爲一個字符串這個字符串的日期格式是什麼?
2017-03-01T10:15:41-0800
,我試圖用
new Date().parse('dd/mm/yyyy', dateString)
然而使用,我想不通的格式。
我有以下日期爲一個字符串這個字符串的日期格式是什麼?
2017-03-01T10:15:41-0800
,我試圖用
new Date().parse('dd/mm/yyyy', dateString)
然而使用,我想不通的格式。
你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有關日期格式模式的更多信息。
考慮使用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!
日期類包含了自己,靜態解析方法(JB Nizet是錯在他的評論你的問題)。
所以,如果你執行此解析只有一次,只使用此方法。
在另一方面,如果你打算進行這種轉換多倍, 更有效的創建一個的SimpleDateFormat實例(一次) ,然後多次使用它。
如果可以的話,和你自己的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)
Date類中沒有這樣的解析方法。 Java字符串被雙引號包圍。所以代碼甚至不能編譯。而這種模式顯然不是你要給的那個。 Google爲「如何用Java解析日期」。你會得到很多相關的結果。 –
@JBNizet我認爲這可能是一個misstagging的情況,因爲這是有效的groovy – weston
@ user304966這實際上是一個常規問題? – weston