Geçerli zaman damgasını şu şekilde almak istiyorum: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Geçerli zaman damgasını şu şekilde almak istiyorum: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Yanıtlar:
Geliştiriciler blogundan:
System.currentTimeMillis()
dönemden bu yana geçen milisaniyeyi ifade eden standart "duvar" saatidir (saat ve tarih). Duvar saati kullanıcı veya telefon şebekesi tarafından ayarlanabilir (bkz. SetCurrentTimeMillis (uzun) ), böylece zaman beklenmedik şekilde geriye veya ileriye doğru atlayabilir. Bu saat yalnızca takvim veya çalar saat uygulaması gibi gerçek dünyadaki tarih ve saatlerle yazışma önemli olduğunda kullanılmalıdır. Aralıklı veya geçen zaman ölçümleri farklı bir saat kullanmalıdır. Kullanıyorsanız , zamanın ne zaman değiştiğini öğrenmek System.currentTimeMillis()
için ACTION_TIME_TICK
, ACTION_TIME_CHANGED
ve ACTION_TIMEZONE_CHANGED
niyet yayınlarını dinlemeyi düşünün .
System.nanoTime()
bir alternatiftir System.currentTimeMillis()
ve hiçbir öngörülemeyen dalgalanmalar vardır ve süresi farklılıklarını ölçmek için tasarlanmıştır.
System.nanoTime()
duvar saati zamanını göstermeye uygun olmayan yorumuna bir not . Bunun için System.currentTimeMillis()
kullanın.
1320917972 , 1 Ocak 1970 saat 00:00:00 UTC'den bu yana saniye sayısını kullanan Unix zaman damgasıdırTimeUnit
. Birim dönüştürme için sınıfı kullanabilirsiniz - System.currentTimeMillis()
saniye arasında.
String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
SimpleDateFormat sınıfını kullanabilirsiniz :
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
Geçerli zaman damgasını almak için aşağıdaki yöntemi kullanın. Benim için iyi çalışıyor.
/**
*
* @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;
}
}
Burada, birinin ihtiyacım olanla aynı şeye ihtiyacı olması durumunda, dosya adında kullanılabilecek insan tarafından okunabilir bir zaman damgası verilmiştir:
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;
}
}
Bunları dene
time.setText(String.valueOf(System.currentTimeMillis()));
ve timeStampa zaman formatı
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);
Modern cevaba katkıda bulunmak istiyorum.
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
Hemen şimdi çalışırken çıktı:
1543320466
1000'e bölünme birçok kişi için sürpriz olmayacak olsa da, kendi zaman dönüşümlerinizi yapmak oldukça hızlı okumak zor olabilir, bu yüzden kaçınabildiğinizde girmek kötü bir alışkanlıktır.
Kullandığım Instant
sınıf, modern Java tarih ve saat API'sı java.time'ın bir parçasıdır. Yeni Android sürümleri, API seviye 26 ve üstü üzerinde yerleşiktir. Eski Android için programlıyorsanız, backport'u alabilirsiniz, aşağıya bakın. Bunu yapmak istemiyorsanız, anlaşılır bir şekilde, yine de yerleşik bir dönüşüm kullanacağım:
String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
System.out.println(ts);
Bu sealskej'in cevabı ile aynı. Çıktı öncekiyle aynı.
Evet, java.time eski ve yeni Android cihazlarda güzel çalışıyor. Sadece en az Java 6 gerektirir .
org.threeten.bp
alt paketlerle aldığınızdan emin olun .java.time
.java.time
ilk tarif edildi.java.time
Java 6 ve 7'nin backport'u (JSR-310 için ThreeTen).Hits'in cevabını kullanmanızı öneririm, ancak bir Yerel Ayar biçimi ekleyerek, Android Geliştiricileri şu şekilde önerir :
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;
}
Bu kod Kotlin sürümüdür. Varyans dönemi vermek için son basamakta rastgele shuffle tamsayısı eklemek için başka bir fikrim var.
Kotlin versiyonu
val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance
val deltaEpoch = oldEpoch - currentEpoch
Bu kode kullanarak daha iyi olacağını düşünüyorum sonra android sürüm 26 veya daha fazla bağlıdır
java.util.Date
,java.util.Calendar
veTimestamp
supplanted şimdi mirası, java.time sınıfları. Java.time işlevinin çoğu , ThreeTen-Backport projesinde Java 6 ve Java 7'ye geri yüklenmiştir . ThreeTenABP projesinde daha önceki Android için daha da uyarlandı . Bkz . ThreeTenABP nasıl kullanılır… .