我收到的Java日期格式如此:"Sun Sep 14 02:00:00 PDT 2014"
为yyyy-MM-dd
格式,但我似乎无法解析它。我尝试的是以下内容:
String time = "Sun Sep 14 02:00:00 PDT 2014";
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
Date contractEffectiveDateFormat = f.parse(time);
System.out.println("Date: " + contractEffectiveDateFormat);
但是,我收到一条错误消息,说明这个日期是不可解决的。我不知道如何解析这个日期,因为如果我尝试使用以下内容解析日期:
DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy");
这是如何将日期正确解析为Date对象,
字符串会变成Date对象,但我似乎无法从那里做任何事情。我想把它打开,看起来像2014-09-14
。关于如何做的任何想法?谢谢!
答案 0 :(得分:3)
使用两个DateFormat
(s)作为输入和输出,
String time = "Sun Sep 14 02:00:00 PDT 2014";
DateFormat out = new SimpleDateFormat("yyyy-MM-dd");
DateFormat in = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy");
try {
Date effectiveDate = in.parse(time);
System.out.println("Date: " + out.format(effectiveDate));
} catch (ParseException e) {
e.printStackTrace();
}
输出是请求的
Date: 2014-09-14
答案 1 :(得分:3)
您的传入字符串是String time = "Sun Sep 14 02:00:00 PDT 2014";
这意味着SimpleDateFormat模式应该与传入的String模式匹配,因此您需要像这样使用SimpleDateFormat
DateFormat inFormat=new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy",Locale.ENGLISH);
然后当您在inFormat上调用parse()时,它将为您提供Date对象,该对象没有与之关联的特定格式。因此,为了再次格式化Date,您需要创建SimpleDateFormat对象,指定您想要的格式
DateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
最终将所有人绑在一起
还有一件事总是指定 区域设置
String time = "Sun Sep 14 02:00:00 PDT 2014";
DateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
// good practice to specify the locale
DateFormat inFormat=new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy",Locale.ENGLISH);
try {
Date parsedDate = inFormat.parse(time);
System.out.println("Required Formatted Date: " + outFormat.format(effectiveDate));
} catch (ParseException e) {
e.printStackTrace();
}
答案 2 :(得分:2)
只需添加另一个SimpleDateFormat
即可让您按照自己的方式展示Date
对象:
public static void main(String[] args) throws ParseException {
String time = "Sun Sep 14 02:00:00 PDT 2014";
DateFormat df = new SimpleDateFormat("EEE MMM dd kk:mm:ss z yyyy");
Date contractEffectiveDateFormat = df.parse(time);
System.out.println("Date: " + contractEffectiveDateFormat);
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(f.format(contractEffectiveDateFormat)); // prints 2014-09-14
}