我有一个 String 我需要创建一个日期的表示 Date 或者 Calendar 对象来自.我已经看过了 DateCalendar 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 了解更多信息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top