0

// Javaプログラミングは初めてです

この形式で日付/時刻を表す String オブジェクトがあります: "2013-06-09 14:20:00" (yyyy-MM-dd HH:mm:ss)

計算を実行できるように Date オブジェクトに変換したいのですが、これを行う方法がわかりません。

私は試した :

String string = "2013-06-09 14:20:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(string);
System.out.println(date);
//Prints Mon Dec 31 00:00:00 GMT 2012

どんな助けでも大歓迎

わかりましたので、コードを次のように更新しました。日付を印刷すると正しい日付/時刻が得られますが、これは正しい実装ですか:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String string = "2013-06-09 14:20:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(string);
System.out.println(dateFormat.format(date));
//prints 2013-06-09 14:20:00

これまでに回答/コメントしたすべての人に感謝します

4

3 に答える 3

3

フォーマットが間違っています。代わりにこれを使用してください:

「yyyy-dd-MM HH:mm:ss」

確かに、2回宣言する必要がないことを除いて、最後のプログラムバージョンは問題ありませんSimpleDateFormat。単に:

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = "2013-06-09 14:20:00";
Date date = dateFormat.parse(string);
System.out.println(dateFormat.format(date));
于 2013-06-08T11:17:49.643 に答える
0

java.util.Date の使用

zzKozakの答えは正しいです。うーん、ほぼ正解。サンプル コードでは、必要な例外処理が省略されています。このように…</p>

java.text.DateFormat dateFormat = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String string = "2013-06-09 14:20:00";
Date date = null;
try {
    date = dateFormat.parse(string);
} catch ( ParseException e ) {
    e.printStackTrace();
}
System.out.println("date: " + dateFormat.format(date));

java.util.Date を使用しないでください。

Java にバンドルされている java.util.Date および Calendar クラスの使用は避けてください。それらは、設計と実装の両方で悪名高いです。

代わりに、有能な日時ライブラリを使用してください。Java では、次のいずれかを意味します。

  • サードパーティのオープンソースJoda-Time
  • 今後の Java 8 では、JSR 310 によって定義され、Joda-Time に触発された新しいjava.time.* クラス。

タイムゾーン

あなたの質問とコードは、タイムゾーンの問題に対処できません。タイムゾーンを無視すると、デフォルトになります。これにより、本番環境にデプロイしたときに予期しない動作が発生する可能性があります。常にタイムゾーンを指定することをお勧めします。

フォーマッタ

標準のISO 8601形式に従ってスペースを「T」に置き換えると、その文字列を Joda-Time DateTimeインスタンスのコンストラクターに直接渡すことができます。

その文字列をそのまま使用する必要がある場合は、フォーマッタを定義してその形式を指定します。StackOverflow.com では、その多くの例を見つけることができます。

サンプルコード

Java 7 で実行されている Joda-Time 2.3 を使用したサンプル コードを次に示します。

私は勝手にモントリオールのタイムゾーンを選びました。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;

// Specify a time zone rather than rely on default.
// Necessary to handle Daylight Saving Time (DST) and other anomalies.
DateTimeZone timeZone = DateTimeZone.forID( "America/Montreal" );

DateTime dateTime = new DateTime( "2013-06-09T14:20:00", timeZone ); // Or pass DateTimeZone.UTC as time zone for UTC/GMT.

System.out.println( "dateTime: " + dateTime );

実行すると…</p>

dateTime: 2013-06-09T14:20:00.000-04:00
于 2013-12-30T00:27:01.720 に答える