这个问题是一个重复的这个问题的意图。似乎较旧的答案已被“忽略”,而没有答案就是答案。
我需要使用给定的日期格式/格式来解析给定的日期。
我有此代码,它应该可以工作:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main
{
public static void main(String[] args)
{
final Date date = string_to_date("EEE MMM dd HH:mm:ss zzz yyyy",
"Thu Aug 14 16:45:37 UTC 2011");
System.out.println(date);
}
private static Date string_to_date(final String date_format,
final String textual_date)
{
Date ret = null;
final SimpleDateFormat date_formatter = new SimpleDateFormat(
date_format);
try
{
ret = date_formatter.parse(textual_date);
}
catch (ParseException e)
{
e.printStackTrace();
}
return ret;
}
}
由于某种原因,我得到以下输出:
java.text.ParseException: Unparseable date: "Thu Aug 14 16:45:37 UTC 2011"
at java.text.DateFormat.parse(DateFormat.java:337)
at Main.string_to_date(Main.java:24)
at Main.main(Main.java:10)
null
我的日期模式有什么问题?这似乎是个谜。
您的平台默认语言环境显然不是英语。Thu
并且Aug
是英语。您需要在的构造函数中明确指定Locale
as 第二个参数SimpleDateFormat
:
final SimpleDateFormat date_formatter =
new SimpleDateFormat(date_format, Locale.ENGLISH); // <--- Look, with locale.
没有它,将使用平台默认语言环境来解析日期/月份名称。您可以通过Locale#getDefault()
以下方式了解您的平台默认语言环境:
System.out.println(Locale.getDefault());
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句