web-dev-qa-db-ja.com

Javaで現在の日付を文字列に変換する方法は?

Javaで現在の日付を文字列に変換するにはどうすればよいですか?

105
user354299
String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date());
204
Ian Purton
// GET DATE & TIME IN ANY FORMAT
import Java.util.Calendar;
import Java.text.SimpleDateFormat;
public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss";

public static String now() {
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
return sdf.format(cal.getTime());
}

here から取得

59
Itay Karo
// On the form: dow mon dd hh:mm:ss zzz yyyy
new Date().toString();
26
jasonmp85

DateFormat 実装を使用します。例えば SimpleDateFormat

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String data = df.format(new Date());
17
Adamski

もっと早く :

String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( ));
9
Johann Goulley

tl; dr

LocalDate.now()
         .toString() 

2017-01-23

希望する/予想されるタイムゾーンを明示的に指定する方が適切です。

LocalDate.now( ZoneId.of( "America/Montreal" ) )
         .toString() 

Java.time

Java 8以降の最新の方法は、 Java.time フレームワークを使用することです。

日付は世界中で随時変化するため、タイムゾーンを指定します。

ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;  // Or ZoneOffset.UTC or ZoneId.systemDefault()
LocalDate today = LocalDate.now( zoneId ) ;
String output = today.toString() ;

2017-01-23

デフォルトでは、標準の ISO 8601 形式の文字列を取得します。

他の形式の場合は、Java.time.format.DateTimeFormatterクラスを使用します。


Java.timeについて

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

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

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

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

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

ThreeTen-Extra プロジェクトは、クラスを追加してJava.timeを拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。ここでは、 IntervalYearWeekYearQuarter 、および more

8
Basil Bourque

ほとんどの答えは有効でした。日付処理用の新しいJava AP​​Iの変更により、Java日付処理の以前のあいまいさが確実に削減されました。

同様の呼び出しに対して非推奨のメッセージが表示されます。

new Date() // deprecated

上記の呼び出しでは、開発者は、新しいDateオブジェクトがDateオブジェクトに現在のタイムスタンプを与えると想定していました。この動作は、他のJava AP​​Iクラス間で一貫していません。

これを行う新しい方法は、Calendarインスタンスを使用することです。

new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime()

ここでも命名規則は完全ではありませんが、これはかなり体系化されています。私のように物事を盗むのに苦労しているが、それが論理的に聞こえる/現れても何かを決して忘れない人にとって、これは良いアプローチです。

これは実生活と同義です

  1. Calendarオブジェクトを取得し、その中の時間を探します。 (カレンダーから時間を取得する身体がないのではないかと思うので、完璧ではないと言ったのですが、それはまったく別のトピックです)
  2. 次に、単純なテキスト形式の日付が必要なため、ステップ1の日付の書式設定に役立つSimpleDateFormatユーティリティクラスを使用します。書式のパラメーターとしてyyyy、MM、ddを使用しました。 サポートされている日付形式パラメーター

これを行うもう1つの方法は、Joda time APIを使用することです

new DateTime().toString("yyyy-MM-dd")

またははるかに明白

new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd")

どちらも同じ結果を返します。

0

YYYY-MM-ddの時間

String time = new DateTime( yourData ).toString("yyyy-MM-dd");

また、DateTimeのライブラリは次のとおりです。

import org.joda.time.DateTime;

0
user8483918