私はそのような現在のタイムスタンプを取得したいです。1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
解決策は次のとおりです。
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
開発者ブログから:
System.currentTimeMillis()
は、エポックからのミリ秒を表す標準の「壁」時計(時間と日付)です。壁掛け時計は、ユーザーまたは電話ネットワークで設定できます( setCurrentTimeMillis(long) を参照)。そのため、時間が前後にジャンプすることがあります。この時計は、カレンダーや目覚まし時計のアプリケーションなど、実際の日付と時刻との対応が重要な場合にのみ使用してください。間隔または経過時間の測定には別のクロックを使用してください。 System.currentTimeMillis()
を使用している場合は、ACTION_TIME_TICK
、ACTION_TIME_CHANGED
およびACTION_TIMEZONE_CHANGED
インテント放送を聴いて、時間がいつ変わるのかを調べてください。
1320917972は、1970年1月1日のUTC 00:00:00からの経過秒数を使用したUnixタイムスタンプです。ユニットにはTimeUnit
クラスを使用できます。変換 - System.currentTimeMillis()
から秒へ。
String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(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;
}
}
使い方は簡単です。
long millis = new Date().getTime();
あなたがそれを特定のフォーマットで欲しいならば、あなたは以下のようなフォーマッタを必要とします
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString = dateFormat.format(new Date());
これは、誰かが私が必要としているものと同じものが必要な場合に備えて、ファイル名に使用できる人間が読める形式のタイムスタンプです。
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();
長いミリ秒で現在時刻を取得する
私は現代の答えに貢献したいと思います。
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の答えと同じです。出力は以前と同じです。
はい、Java.timeは新旧のAndroidデバイスでうまく動作します。少なくともJava 6が必要です。
org.threeten.bp
からサブパッケージを使って日付と時刻のクラスをインポートしてください。Java.time
の使い方の説明。Java.time
は最初に記述されたものです。Java.time
からJava 6および7へのバックポート(ThreeTen for JSR-310)。Kotlinのソリューション:
val nowInEpoch = Instant.now().epochSecond
SDKの最小バージョンが26であることを確認してください。
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;
}
試してみる
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);