【发布时间】:2014-03-11 11:05:35
【问题描述】:
如何格式化一个看起来像这样的字符串
2012 年 12 月 8 日星期六 00:00:00 JST
进入 yyyy-mm-dd 即
2012-12-08
通过浏览web,我发现了这段代码:
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = "Sat Dec 08 00:00:00 JST 2012";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
但是,我无法修改它以接受第一行(Sat Dec 08 00:00:00 JST 2012)作为字符串并将其格式化为 yyyy-mm-dd 格式。
我该怎么办?我应该尝试修改它吗?还是完全尝试另一种方法?
更新:我正在使用您的答案(出现错误:无法解析的日期:“Sat Dec 08 00:00:00 JST 2012”)
public static void main(String[] args) throws ParseException{
SimpleDateFormat srcFormatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy", Locale.JAPANESE);
SimpleDateFormat destFormatter = new SimpleDateFormat("dd-MMM-yyyy", Locale.JAPANESE);
Date date = srcFormatter.parse("Sat Dec 08 00:00:00 JST 2012");
String destDateString = destFormatter.format(date);
/* String dateInString = "Sat Dec 08 00:00:00 JST 2012";*/
System.out.println(destDateString);
/*try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}*/
}
}
【问题讨论】:
-
第一个字符串使用英文单词,所以你应该给 SimpleDateFormat 一个 Locale。
new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);. -
不要认为这行得通,我已将 qn 更新为更具体。请参阅 String dateInString = "Sat Dec 08 00:00:00 JST 2012";
-
您实际上有 2 个问题。 1)您需要 2 种日期格式(如 Warlord 和 SubhrajyotiMajumder 所述)。 2) 如果你没有给出语言环境并且在默认语言不是英语的 jvm 上执行代码,它将无法解析单词。
-
我已经更新了代码以包含你的和 SubhrajyotiMajumder 的答案,但我无法让它工作。字符串仍然无法解析
标签: java date datetime date-format