簡體   English   中英

如何將日期字符串轉換為日期或日歷對象?

[英]How to convert a date String to a Date or Calendar object?

我有一個日期的String表示形式,我需要從中創建一個DateCalendar對象。 我已經瀏覽了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);

tl;博士

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的標准ISO 8601格式,您可以要求該類直接解析字符串,而無需指定格式化程序。

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 日 | 本地日期:2015-01-02

備受推崇的Joda Time 庫也值得一看。 這是為 Java 7編寫的新日期和時間 API 的基礎。設計簡潔、直觀、文檔齊全,避免了原始java.util.Date / java.util.Calendar類的許多笨拙之處。

Joda 的DateFormatter可以將 String 解析為 Joda DateTime

試試這個:

DateFormat.parse(String)

DateFormat類有一個parse方法。

有關詳細信息,請參閱日期格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM