web-dev-qa-db-ja.com

Android現在のタイムスタンプを取得しますか?

私はそのような現在のタイムスタンプを取得したいです。1320917972

int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts =  tsTemp.toString();
216
Rjaibi Mejdi

解決策は次のとおりです。

Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
259
Rjaibi Mejdi

開発者ブログから:

System.currentTimeMillis()は、エポックからのミリ秒を表す標準の「壁」時計(時間と日付)です。壁掛け時計は、ユーザーまたは電話ネットワークで設定できます( setCurrentTimeMillis(long) を参照)。そのため、時間が前後にジャンプすることがあります。この時計は、カレンダーや目覚まし時計のアプリケーションなど、実際の日付と時刻との対応が重要な場合にのみ使用してください。間隔または経過時間の測定には別のクロックを使用してください。 System.currentTimeMillis()を使用している場合は、ACTION_TIME_TICKACTION_TIME_CHANGEDおよびACTION_TIMEZONE_CHANGEDインテント放送を聴いて、時間がいつ変わるのかを調べてください。

78
drooooooid

1320917972は、1970年1月1日のUTC 00:00:00からの経過秒数を使用したUnixタイムスタンプです。ユニットにはTimeUnitクラスを使用できます。変換 - System.currentTimeMillis()から秒へ。

String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
29
sealskej

あなたは SimpleDateFormat クラスを使うことができます:

SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());

現在のタイムスタンプを取得するには、以下の方法を使用してください。それは私にとってはうまくいきます。

/**
 * 
 * @return yyyy-MM-dd HH:mm:ss formate date as string
 */
public static String getCurrentTimeStamp(){
    try {

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentDateTime = dateFormat.format(new Date()); // Find todays date

        return currentDateTime;
    } catch (Exception e) {
        e.printStackTrace();

        return null;
    }
}
21
Hits

使い方は簡単です。

long millis = new Date().getTime();

あなたがそれを特定のフォーマットで欲しいならば、あなたは以下のようなフォーマッタを必要とします

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString  = dateFormat.format(new Date());
10
Pranav

これは、誰かが私が必要としているものと同じものが必要な場合に備えて、ファイル名に使用できる人間が読める形式のタイムスタンプです。

package com.example.xyz;

import Android.text.format.Time;

/**
 * Clock utility.
 */
public class Clock {

    /**
     * Get current time in human-readable form.
     * @return current time as a string.
     */
    public static String getNow() {
        Time now = new Time();
        now.setToNow();
        String sTime = now.format("%Y_%m_%d %T");
        return sTime;
    }
    /**
     * Get current time in human-readable form without spaces and special characters.
     * The returned value may be used to compose a file name.
     * @return current time as a string.
     */
    public static String getTimeStamp() {
        Time now = new Time();
        now.setToNow();
        String sTime = now.format("%Y_%m_%d_%H_%M_%S");
        return sTime;
    }

}

ただ使う

long millis = new Date().getTime();

長いミリ秒で現在時刻を取得する

2
Bilal Ahmad

Java.time

私は現代の答えに貢献したいと思います。

    String ts = String.valueOf(Instant.now().getEpochSecond());
    System.out.println(ts);

今実行したときに出力されます。

1543320466

1000分の1の割算は多くの人にとって驚くべきことではありませんが、自分の時間変換を行うことはかなり速く読むのが難しくなる可能性があるので、避けることができるときに入るのは悪い習慣です。

私が使っているInstantクラスは、現代のJava日時APIであるJava.timeの一部です。これは新しいAndroidバージョン、APIレベル26以上に組み込まれています。古いAndroid用にプログラミングしている場合は、バックポートを取得することがあります。下記を参照してください。そうしたくないのであれば、当然のことながら私は組み込みの変換を使います。

    String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
    System.out.println(ts);

これはsealskejの答えと同じです。出力は以前と同じです。

質問:Android上でJava.timeを使用できますか?

はい、Java.timeは新旧のAndroidデバイスでうまく動作します。少なくともJava 6が必要です。

  • Java 8以降および新しいAndroidデバイス(APIレベル26以降)では、最新のAPIが組み込まれています。
  • Java 6および7では、ThreeTen Backportという新しいクラスのバックポートを入手してください(ThreeTen for JSR310。下部のリンクを参照)。
  • Androidでは、Android版のThreeTen Backportを使用してください。それはThreeTenABPと呼ばれています。そして、必ずorg.threeten.bpからサブパッケージを使って日付と時刻のクラスをインポートしてください。

リンク集

2
Ole V.V.

Kotlinのソリューション:

val nowInEpoch = Instant.now().epochSecond

SDKの最小バージョンが26であることを確認してください。

1
DSavi

Hitsの答えを使用することをお勧めしますが、Localeフォーマットを追加すると、Android開発者 が推奨する方法 になります。

try {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
        return dateFormat.format(new Date()); // Find todays date
    } catch (Exception e) {
        e.printStackTrace();

        return null;
    }
0

試してみる

time.setText(String.valueOf(System.currentTimeMillis()));

時刻フォーマットへのtimeStamp

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);
0
Mujahid khan