web-dev-qa-db-ja.com

現在時刻を取得するためのJavaコード

私は自分のローカルPCシステム時刻を自分のアプリケーションにフェッチまたは同期するためにJavaでコードを検索しています。

146
sushmita

これを試して:

import Java.text.SimpleDateFormat;
import Java.util.Calendar;

public class currentTime {

    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
        System.out.println( sdf.format(cal.getTime()) );
    }

}

SimpleDateFormatは好きなようにフォーマットできます。追加情報については、Java APIを参照してください。

SimpleDateFormat

カレンダー

158
Artur

両方

new Java.util.Date()

そして

System.currentTimeMillis()

現在のシステム時刻を表示します。

140
sleske

tl; dr

Instant.now()  // UTC

…または…

ZonedDateTime.now(
    // Specify time zone.
    ZoneId.of( "Pacific/Auckland" )
)  

詳細

バンドルされているJava.util.Date/.Calendarクラスは非常に面倒です。避けてください。これらは現在レガシーであり、 Java.time フレームワークに取って代わりました。

代わりに、次のどちらかを使用してください。

  • Java.time
    Java 8以降に組み込まれています。 Joda-Timeの公式の後継者です。
    をJava 6&7 に、 をAndroid にバックポートしました。
  • Joda-Time
    サードパーティのライブラリ、オープンソース、無料.

Java.time

ZonedDateTime zdt = ZonedDateTime.now();

古いコードに必要な場合は、Java.util.Dateに変換してください。 Instantname__ に進んでください。これは、 _ utc _ のタイムライン上の瞬間です。

Java.util.Date date = Java.util.Date.from( zdt.toInstant() );

タイムゾーン

暗黙的にJVMの 現在のデフォルトのタイムゾーン に頼るのではなく、明示的にあなたの 希望する/予想されるタイムゾーン を指定する方が良いでしょう。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ZonedDateTime.now( zoneId );  // Pass desired/expected time zone.

ジョダタイム

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

DateTime now = DateTime.now();

他のクラスと相互運用するためにJoda-Time DateTime オブジェクトからJava.util.Dateに変換するには…

Java.util.Date date = now.toDate();

投稿する前にStackOverflowを検索してください。あなたの質問はすでに質問され回答されています。


Java.timeについて

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

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

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

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

  • Java SE 8Java SE 9 、およびそれ以降
    • ビルトイン。
    • バンドル実装の標準Java APIの一部。
    • Java 9では、いくつかのマイナーな機能と修正が追加されています。
  • Java SE 6 および Java SE 7
    • Java.time機能の多くは、 ThreeTen-Backport でJava 6および7にバックポートされています。
  • Android
    • Java.timeクラスのAndroidバンドル実装の最新バージョン。
    • 以前のAndroidでは、 ThreeTenABP プロジェクトに適応していますThreeTen-Backport(前述) 。 ThreeTenABPの使い方… を参照してください。

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

47
Basil Bourque

System.currentTimeMillis()

他のことはすべてうまくいきます。例えばnew Date()はSystem.currentTimeMillis()を呼び出します。

10
mP.

もっと効率的で互換性のあるこの方法を試してください。

SimpleDateFormat time_formatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS");
String current_time_str = time_formatter.format(System.currentTimeMillis());
//Log.i("test", "current_time_str:" + current_time_str);
8
Verdigrass

さらに開発者に知らせるために、そしてBasil Bourqueに感謝して、私はこのトピックに私の石を加え​​たいだけです。

単純にHH:MM:SSフォーマットを取得したい場合は、次のようにします。

LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS);

乾杯。

P.S .:これは少なくともJava 8でのみ機能するでしょう。

7
Damiii

上記のようにあなたが使用することができます

Date d = new Date();

または使用

Calendar.getInstance();

それともミリ秒で欲しいのなら

System.currentTimeMillis()
5
Nuno Furtado

これを試して:

final String currentTime    = String.valueOf(System.currentTimeMillis());
4
Joolah

あなたが何を意味しているのか本当によくわからないが、あなたはおそらく必要なだけである

Date d = new Date();
4
Raibaz

あなたはnew Date()を使うことができ、それはあなたに現在の時間を与えるでしょう。

もしあなたがそれを何らかのフォーマットで表現する必要があるならば(そして通常あなたはそれをする必要があります)それからフォーマッターを使用してください。

DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN"));
String formattedDate = df.format (new Date ());
3
Roman

new Date()。getTime()にバグがあります

    Date date = new Date();
    System.out.println(date);
    System.out.println(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
    long t1 = date.getTime();
    System.out.println((t1 / 1000 / 60 / 60) % 24 + ":" + (t1 / 1000 / 60) % 60 + ":" + (t1 / 1000) % 60);
    long t2 = System.currentTimeMillis();
    System.out.println((t2 / 1000 / 60 / 60) % 24 + ":" + (t2 / 1000 / 60) % 60 + ":" + (t2 / 1000) % 60);

それは私に間違った時間ミリを返します。 System.currentTimeMillis()も。 Dateインスタンスに対応するタイムミリを教えてもらうので、異なるタイムゾーンからのものではなく一致するものを返さなければなりません。変な方法で廃止予定のメソッドが正しい値を返す唯一のものです。

3
mini-me

システム時刻を取得するには、Calendar.getInstance()。getTime()を使用してください。

そして毎回currenttimeになるようにCalendarの新しいインスタンスを取得する必要があります。

Javaコードからchangesystemにコマンドラインを使用できます。

2
Alex

現在の日付を取得するにはこれを試してください。ゲッターを使用して現在の時、分、秒を取得することもできます。

new Date(System.currentTimeMillis()).get....()
1

これはかなり古い質問です。しかし、それを明確にしたいと思います。

Date d = new Date() 

現在のバージョンのJavaでは廃止されています。推奨される方法はカレンダーオブジェクトを使うことです。例えば:

Calendar cal = Calendar.getInstance();
Date currentTime = cal.getTime();

私はこれが将来この質問を参照するかもしれない人々に役立つことを願っています。皆さん、ありがとうございました。

1
Adi