Saya ingin mendapatkan cap waktu saat ini seperti itu: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Saya ingin mendapatkan cap waktu saat ini seperti itu: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Jawaban:
Dari blog pengembang:
System.currentTimeMillis()
adalah jam "dinding" standar (waktu dan tanggal) yang menyatakan milidetik sejak zaman. Jam dinding dapat diatur oleh pengguna atau jaringan telepon (lihat setCurrentTimeMillis (panjang) ), sehingga waktu dapat melompat mundur atau maju secara tak terduga. Jam ini hanya boleh digunakan ketika korespondensi dengan tanggal dan waktu di dunia nyata penting, seperti dalam aplikasi kalender atau jam alarm. Pengukuran waktu interval atau berlalu harus menggunakan jam yang berbeda. Jika Anda menggunakan System.currentTimeMillis()
, pertimbangkan mendengarkan ACTION_TIME_TICK
, ACTION_TIME_CHANGED
dan ACTION_TIMEZONE_CHANGED
siaran Intent untuk mengetahui kapan waktu berubah.
System.nanoTime()
adalah alternatif untuk System.currentTimeMillis()
dan tidak memiliki fluktuasi yang tidak terduga, dan dirancang untuk mengukur perbedaan durasi.
System.nanoTime()
tidak cocok untuk menampilkan waktu jam dinding. Untuk itu, gunakan System.currentTimeMillis()
saja.
1320917972 adalah cap waktu Unix menggunakan jumlah detik sejak 00:00:00 UTC pada 1 Januari 1970. Anda dapat menggunakan TimeUnit
kelas untuk konversi satuan - dari System.currentTimeMillis()
detik.
String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
Anda dapat menggunakan kelas SimpleDateFormat :
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
Gunakan metode di bawah ini untuk mendapatkan cap waktu saat ini. Ini bekerja dengan baik untuk saya.
/**
*
* @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;
}
}
Ini penggunaan sederhana:
long millis = new Date().getTime();
jika Anda menginginkannya dalam format tertentu maka Anda perlu Formatter seperti di bawah ini
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString = dateFormat.format(new Date());
Berikut ini adalah cap waktu yang dapat dibaca manusia yang dapat digunakan dalam nama file, untuk berjaga-jaga seandainya seseorang membutuhkan hal yang sama yang saya butuhkan:
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;
}
}
Coba ini
time.setText(String.valueOf(System.currentTimeMillis()));
dan timeStamp ke format waktu
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);
Saya ingin berkontribusi jawaban modern.
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
Output saat berjalan sekarang:
1543320466
Sementara pembagian oleh 1000 tidak akan mengejutkan banyak orang, melakukan konversi waktu Anda sendiri bisa menjadi sulit dibaca dengan cepat, jadi itu kebiasaan buruk untuk masuk ketika Anda bisa menghindarinya.
The Instant
kelas yang saya gunakan adalah bagian dari java.time, tanggal Jawa modern dan waktu API. Ini bawaan pada versi Android baru, API level 26 dan lebih tinggi. Jika Anda memprogram untuk Android yang lebih lama, Anda mungkin mendapatkan backport, lihat di bawah. Jika Anda tidak ingin melakukan itu, dapat dimengerti, saya masih menggunakan konversi bawaan:
String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
System.out.println(ts);
Ini sama dengan jawaban oleh sealskej. Outputnya sama seperti sebelumnya.
Ya, java.time bekerja dengan baik pada perangkat Android yang lebih lama dan lebih baru. Itu hanya membutuhkan setidaknya Java 6 .
org.threeten.bp
dengan subpackages.java.time
.java.time
pertama kali dijelaskan.java.time
ke Java 6 dan 7 (ThreeTen untuk JSR-310).Saya sarankan menggunakan jawaban Hits, tetapi menambahkan format Lokal, ini yang direkomendasikan oleh Pengembang 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;
}
Kode ini adalah versi Kotlin. Saya punya ide lain untuk menambahkan integer acak acak dalam digit terakhir untuk memberikan waktu varians zaman.
Versi Kotlin
val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance
val deltaEpoch = oldEpoch - currentEpoch
Saya pikir akan lebih baik menggunakan kode ini kemudian tergantung pada versi android 26 atau lebih
java.util.Date
,java.util.Calendar
, danTimestamp
sekarang warisan, digantikan oleh java.time kelas. Sebagian besar fungsi java.time di - portingkan ke Java 6 & Java 7 di proyek ThreeTen-Backport . Lebih lanjut diadaptasi untuk Android sebelumnya dalam proyek ThreeTenABP . Lihat Cara menggunakan ThreeTenABP… .