代码之家  ›  专栏  ›  技术社区  ›  Aaron

如何将日期字符串转换为日期或日历对象?

  •  62
  • Aaron  · 技术社区  · 16 年前

    String 表示我需要创建的日期 Date Calendar 反对。我已经看过了 日期 日历

    5 回复  |  直到 13 年前
        1
  •  126
  •   lesyk    8 年前

    简言之:

    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);
    
        2
  •  15
  •   Basil Bourque    8 年前

    LocalDate.parse( "2015-01-02" )
    

    java.time

    Java8及更高版本有一个新的 java.time Joda-Time JSR 310 ,并由 ThreeTen-Extra Tutorial .

    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 Locale

    格式化模式

    阅读 DateTimeFormatter 类doc以获取格式模式中使用的代码的详细信息。它们与旧的过时的有点不同 java.text.SimpleDateFormat 班级模式。

    注意第二个参数是如何 parse method reference ,语法添加到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

    自动定位

    DateTimeFormatter.ofLocalizedDate ,并确保指定所需/预期的 而不是依赖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日|当地日期:2015-01-02

        3
  •  9
  •   serg10    16 年前

    高度重视 Joda Time library date and time api 这是为Java7设计的。设计简洁,直观, well documented 避免了原作的许多笨拙 java.util.Date java.util.Calendar 上课。

    乔达的 DateFormatter DateTime .

        4
  •  0
  •   J0e3gan    10 年前

    DateFormat.parse(String)
    
        5
  •  0
  •   fospathi Eddie    4 年前

    这个 DateFormat 班上有一个 parse

    看见 DateFormat 了解更多信息。