我有以下日期为一个字符串这个字符串的日期格式是什么?
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