Date
或 Calendar
对象。我查看了 Date
和 Calendar
的API文档,但是没有找到其他方法,只能自己编写解析方法。我知道一定有其他方法,有人知道解决方案吗?简而言之:
DateFormat formatter = new SimpleDateFormat("MM/dd/yy");
try {
Date date = formatter.parse("01/29/02");
} catch (ParseException e) {
e.printStackTrace();
}
查看更多信息,请参阅SimpleDateFormat
javadoc。
要将其转换为Calendar
,请执行以下操作:
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
LocalDate.parse( "2015-01-02" )
Java 8及更高版本提供了一个新的框架java.time,使得先前的答案已经过时。该框架受到Joda-Time启发,由JSR 310定义,并由ThreeTen-Extra项目扩展。请参阅教程。
旧的类,如 java.util.Date/.Calendar,常常引起麻烦和困惑。请避免使用它们。
LocalDate
与Joda-Time一样,java.time有一个类LocalDate
来表示仅具有日期(没有时间和时区)的值。
如果您的输入字符串采用标准的ISO 8601格式yyyy-MM-dd
,则可以请求该类直接解析字符串,而无需指定格式器。
在java.time中,默认使用ISO 8601格式进行日期时间值的解析和生成字符串表示。
LocalDate localDate = LocalDate.parse( "2015-01-02" );
如果您有不同的格式,请从java.time.format包中指定格式化程序。您可以指定自己的格式化模式,或者让java.time根据Locale
指定翻译人类语言和文化习惯以决定问题(例如周期与逗号)。
详见DateTimeFormatter
类文档,其中列出了格式模式中使用的代码。它们与过时的java.text.SimpleDateFormat
类模式略有不同。
请注意,parse
方法的第二个参数是Java 8及更高版本中添加的方法引用语法。
String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "MMMM d, yyyy" , Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );
输出到控制台。
System.out.println ( "localDate: " + localDate );
localDate: 2015-01-02
或者不指定格式化模式,让java.time自动进行本地化。调用DateTimeFormatter.ofLocalizedDate
,一定要指定所需的/期望的Locale
,而不是依赖于JVM当前的默认值,因为这个值在运行时可能会随时更改(!)。
String input = "January 2, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate ( FormatStyle.LONG );
formatter = formatter.withLocale ( Locale.US );
LocalDate localDate = LocalDate.parse ( input , formatter );
输出至控制台。
System.out.println ( "input: " + input + " | localDate: " + localDate );
输入:January 2, 2015 | 当地日期:2015-01-02
非常受推崇的Joda Time库也值得一看。这是Java 7中新日期和时间API的基础。设计精巧、直观,文档齐全,避免了原始的java.util.Date
/ java.util.Calendar
类的许多笨拙之处。
Joda的DateFormatter
可以将字符串解析为Joda DateTime
。
试试这个:
DateFormat.parse(String)
java.util.Date
,java.util.Calendar
和java.text.SimpleTextFormat
)现在已经成为遗留系统,被Java.time类所取代。请参阅Oracle的教程。 - Basil Bourque