我有一个日期时间格式 - "dd MMM yyyy"
,在尝试解析“2012年8月6日”时,我得到了一个java.text.ParseException无法解析的日期。
每件事看起来都很好,你看到了问题吗?
答案 0 :(得分:8)
您还需要提及Locale ......
Date date = new SimpleDateFormat("dd MMMM yyyy", Locale.ENGLISH).parse("6 Aug 2012");
答案 1 :(得分:1)
使用类似:
DateFormat sdf = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH);
Date date = sdf.parse("6 Aug 2012");
答案 2 :(得分:1)
这对你有用。您需要提供区域设置
Date date = new SimpleDateFormat("dd MMM yyyy", Locale.ENGLISH).parse("6 Aug 2012");
或者
Date date = new SimpleDateFormat("dd MMM yyyy", new Locale("EN")).parse("6 Aug 2012");
答案 3 :(得分:1)
将split()
功能与分隔符 " "
String s = “6 Aug 2012”;
String[] arr = s.split(" ");
int day = Integer.parseInt(arr[0]);
String month = arr[1];
int year = Integer.parseInt(arr[2]);
答案 4 :(得分:1)
其他答案正确但过时,并且由于仍在访问此问题,因此这是现代答案。
使用现代Java日期和时间API java.time进行日期工作。这将适用于您的Android版本/ minSDK:
DateTimeFormatter dateFormatter
= DateTimeFormatter.ofPattern("d MMM uuuu", Locale.ENGLISH);
String str = "6 Aug 2012";
LocalDate date = LocalDate.parse(str, dateFormatter);
System.out.println(date);
输出:
2012-08-06
在格式模式下,java.time在一个月或一两位数字的日期中仅使用一个d
。一年中,您可以使用yyyy
,uuuu
,y
和u
中的任何一个。正如其他人所说,请指定语言环境。如果Aug
是英语,则使用英语。
java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6 。
org.threeten.bp
导入日期和时间类。uuuu
versus yyyy
in DateTimeFormatter
formatting pattern codes in Java? java.time
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。