题
我有一个 String
我需要创建一个日期的表示 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.time
Java 8 及更高版本有一个新的 java.time 使这些其他答案过时的框架。该框架的灵感来自 乔达时间, , 被定义为 JSR 310, ,并扩展为 三十额外 项目。请参阅 教程.
旧的捆绑类 java.util.Date/.Calendar 是出了名的麻烦和混乱。避开他们。
LocalDate
与 Joda-Time 一样,java.time 有一个类 LocalDate
表示不含日期和时区的仅日期值。
ISO 8601
如果您的输入字符串符合标准 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 );
本地日期: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 );
输入:2015年1月2日| localdate:2015-01-02
这 高度重视 乔达时间库 也值得一看。这是新的基础 日期和时间 API 这是针对 Java 7 的。设计简洁、直观, 有据可查 并且避免了很多原作的笨拙之处 java.util.Date
/ java.util.Calendar
类。
乔达的 DateFormatter
可以将 String 解析为 Joda DateTime
.
尝试这个:
DateFormat.parse(String)
这 DateFormat
类有一个 parse
方法。
看 http://java.sun.com/j2se/1.4.2/docs/api/java/text/DateFormat.html 了解更多信息。