そのような現在のタイムスタンプを取得したい:1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
そのような現在のタイムスタンプを取得したい:1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
回答:
開発者ブログから:
System.currentTimeMillis()
エポックからのミリ秒を表す標準の「ウォール」クロック(時刻と日付)です。壁時計はユーザーまたは電話ネットワーク(setCurrentTimeMillis(long)を参照)によって設定できるため、時刻が予期せずに前後にジャンプする可能性があります。この時計は、カレンダーや目覚まし時計のアプリケーションなど、実際の日時との対応が重要な場合にのみ使用してください。間隔または経過時間の測定では、別のクロックを使用する必要があります。を使用している場合System.currentTimeMillis()
はACTION_TIME_TICK
、ACTION_TIME_CHANGED
とACTION_TIMEZONE_CHANGED
Intentのブロードキャストを聞いて、時間が変更されるタイミングを確認することを検討してください。
System.nanoTime()
はの代替System.currentTimeMillis()
であり、予測できない変動がなく、期間の違いを測定するように設計されています。
System.nanoTime()
ウォールクロック時間の表示には適していません。そのためには、System.currentTimeMillis()
代わりに使用してください。
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;
}
}
これは、誰かが私と同じものを必要とする場合に備えて、ファイル名に使用できる人間が読めるタイムスタンプです。
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;
}
}
私は現代の答えに貢献したいと思います。
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
今実行中の出力:
1543320466
1000による除算は多くの人にとって驚くべきことではありませんが、独自の時間変換を行うと、非常に速く読み取ることが難しくなる可能性があるため、それを回避できる場合に慣れるのは悪い習慣です。
Instant
私が使用していたクラスはjava.timeの一部、近代的なJavaの日付と時刻のAPIです。新しいAndroidバージョン、APIレベル26以降に組み込まれています。古いAndroid向けにプログラミングしている場合は、バックポートを取得できます。以下を参照してください。あなたがそれをしたくないのであれば、当然のことながら、組み込みの変換を使用します。
String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
System.out.println(ts);
これはsealskejの答えと同じです。出力は以前と同じです。
はい、java.timeは新旧のAndroidデバイスでうまく動作します。少なくともJava 6が必要です。
org.threeten.bp
、サブパッケージを使用して日付と時刻のクラスをインポートするようにしてください。java.time
。java.time
最初に説明しました。java.time
Java 6および7(JSR-310用のThreeTen)へ。私はヒッツの答えを使用することをお勧めしますが、ロケール形式を追加すると、これは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;
}
このコードはKotlinバージョンです。分散エポック時間を与えるために最後の桁にランダムシャッフル整数を追加する別のアイデアがあります。
Kotlinバージョン
val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance
val deltaEpoch = oldEpoch - currentEpoch
私はそれがこのkodeを使用する方が良いと思いますそして次にアンドロイドバージョン26以上に依存します
java.util.Date
、java.util.Calendar
とTimestamp
取って代わら今あるレガシー、java.timeのクラス。java.time機能のほとんどは、ThreeTen -BackportプロジェクトのJava 6およびJava 7にバックポートされています。ThreeTenABPプロジェクトの初期のAndroidにさらに適合。ThreeTenABPの使用方法…を参照してください。