我将以下日期作为字符串
2017-03-01T10:15:41-0800
我试图与
一起使用new Date().parse('dd/mm/yyyy', dateString)
但是,我无法弄清楚格式。
答案 0 :(得分: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!
答案 1 :(得分: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了解有关日期格式模式的更多信息。
答案 2 :(得分:0)
日期类包含自己的静态 解析方法( JB Nizet 对他的评论错误问题)。
因此,如果您只执行一次解析,请使用此方法。
另一方面,如果您计划执行多次次转化, 创建 SimpleDateFormat 实例(一次)效率更高 然后多次使用它。
答案 3 :(得分: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)