![](/img/trans.png)
[英]How to convert the following string to date or calendar object in Java?
[英]How to convert a date String to a Date or Calendar object?
我有一個日期的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 8 及更高版本有一個新的java.time框架,使這些其他答案過時了。 該框架受Joda-Time 的啟發,由JSR 310定義,並由ThreeTen-Extra項目擴展。 請參閱教程。
舊的捆綁類 java.util.Date/.Calendar 是出了名的麻煩和混亂。 避開它們。
LocalDate
與 Joda-Time 一樣,java.time 有一個LocalDate
類來表示沒有時間和時區的僅日期值。
如果您的輸入字符串是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.