web-dev-qa-db-ja.com

(yyyy-MM-dd)形式で文字列の日付を解析する

「2013-09-18」という形式の文字列があります。 Java.util.Dateに変換したいです。私はこれをやっています

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse(currentDateText);

ConvertedCurrentDateは、「Wed Sep 18 00:00:00 IST 2013」として提供されます

「2013-09-18」の形式で出力したい

時間、分、秒は来てはならず、yyyy-MM-ddの形式である必要があります。

11
user2791546

次のように出力をformatする必要があるかもしれません。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date convertedCurrentDate = sdf.parse("2013-09-18");
String date=sdf.format(convertedCurrentDate );
System.out.println(date);

つかいます

String convertedCurrentDate =sdf.format(sdf.parse("2013-09-18"));

出力:

2013-09-18

tl; dr

LocalDate.parse( "2013-09-18" )

…および…

myLocalDate.toString()  // Example: 2013-09-18

Java.time

質問とその他の回答は古くなっています。面倒な古いレガシーの日時クラスは、Java.timeクラスに取って代わりました。

ISO 8601

入力文字列は、標準の ISO 8601 形式、YYYY-MM-DDに準拠しています。 Java.timeクラスは、日時値の文字列表現を解析および生成するときに、デフォルトでISO 8601形式を使用します。したがって、フォーマットパターンを指定する必要はありません。

LocalDate

LocalDate クラスは、時刻とタイムゾーンのない日付のみの値を表します。

LocalDate ld = LocalDate.parse( "2013-09-18" );

Java.timeについて

Java.time フレームワークは、Java 8以降に組み込まれています。これらのクラスは、 Java.util.DateCalendar 、& SimpleDateFormat などの厄介な古い レガシー 日時クラスに取って代わります。

Joda-Time プロジェクトは、現在 メンテナンスモード であり、 Java.time クラスへの移行を推奨しています。

詳細については、 Oracleチュートリアル を参照してください。また、Stack Overflowで多くの例と説明を検索してください。仕様は JSR 31 です。

Java.timeオブジェクトをデータベースと直接交換できます。 JDBC 4.2 以降に準拠する JDBCドライバー を使用します。文字列も、Java.sql.*クラスも必要ありません。

Java.timeクラスはどこで入手できますか?

ThreeTen-Extra プロジェクトは、追加のクラスでJava.timeを拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。 IntervalYearWeekYearQuartermore などの便利なクラスがあります。

11
Basil Bourque

Dateオブジェクトを作成しています。これは、タイムラインの特定のポイントを表しています。これは、分や秒など、それを正しく表現するために必要なすべての部分があることを意味します。日付の一部のみを含む文字列から初期化するため、欠損データはデフォルトになります。

次に、このDateオブジェクトを「印刷」していると想定しますが、実際に解析するときに指定したような形式を指定することはありません。同じSimpleDateFormatを使用しますが、Holgerが推奨したように、逆メソッドformat(Date)を呼び出します

6
Morfic
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String cunvertCurrentDate="06/09/2015";
Date date = new Date();
date = df.parse(cunvertCurrentDate);
2
user5172411

文字列をフォーマット( "yyyy-MM-dd")の日付に変換して、Mysqlデータベースに保存します。

 String date ="2016-05-01";
 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 Date parsed = format.parse(date);
 Java.sql.Date sql = new Java.sql.Date(parsed.getTime());

sqlそれは日付形式での私の出力です

1
mahdi kallel