Ich möchte den aktuellen Zeitstempel so erhalten: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Ich möchte den aktuellen Zeitstempel so erhalten: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Antworten:
Aus dem Entwicklerblog:
System.currentTimeMillis()
ist die Standard-Wanduhr (Uhrzeit und Datum), die Millisekunden seit der Epoche ausdrückt. Die Wanduhr kann vom Benutzer oder vom Telefonnetz eingestellt werden (siehe setCurrentTimeMillis (lang) ), sodass die Zeit möglicherweise unvorhersehbar vor- oder zurückspringt. Diese Uhr sollte nur verwendet werden, wenn die Korrespondenz mit realen Daten und Zeiten wichtig ist, z. B. in einem Kalender oder einer Weckeranwendung. Intervall- oder abgelaufene Zeitmessungen sollten eine andere Uhr verwenden. Wenn Sie verwenden System.currentTimeMillis()
, sollten Sie auf das Hören ACTION_TIME_TICK
, ACTION_TIME_CHANGED
und ACTION_TIMEZONE_CHANGED
Intent - Übertragungen , um herauszufinden , wenn die Zeit ändert.
System.nanoTime()
eine Alternative zu System.currentTimeMillis()
unvorhersehbaren Schwankungen darstellt und zur Messung von Dauerunterschieden ausgelegt ist.
System.nanoTime()
die nicht zur Anzeige der Wanduhrzeit geeignet ist. Verwenden Sie zu diesem Zweck System.currentTimeMillis()
stattdessen.
1320917972 ist ein Unix-Zeitstempel, der die Anzahl der Sekunden seit 00:00:00 UTC am 1. Januar 1970 verwendet. Sie können die TimeUnit
Klasse für die Einheitenumrechnung verwenden - von System.currentTimeMillis()
in Sekunden.
String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
Sie können die SimpleDateFormat- Klasse verwenden:
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
Verwenden Sie die folgende Methode, um den aktuellen Zeitstempel abzurufen. Es funktioniert gut für mich.
/**
*
* @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;
}
}
Hier ist ein für Menschen lesbarer Zeitstempel, der in einem Dateinamen verwendet werden kann, für den Fall, dass jemand dasselbe benötigt, das ich benötigt habe:
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;
}
}
Probiere diese
time.setText(String.valueOf(System.currentTimeMillis()));
und Zeitstempel zum Zeitformat
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);
Ich möchte die moderne Antwort beitragen.
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
Ausgabe beim Ausführen gerade jetzt:
1543320466
Während die Division durch 1000 für viele nicht überraschend ist, kann es schwierig sein, eigene Zeitkonvertierungen durchzuführen, und es ist daher eine schlechte Angewohnheit, sich darauf einzulassen, wenn Sie dies vermeiden können.
Die Instant
Klasse, die ich verwende, ist Teil von java.time, der modernen Java-API für Datum und Uhrzeit. Es ist in neue Android-Versionen ab API-Level 26 integriert. Wenn Sie für älteres Android programmieren, erhalten Sie möglicherweise den Backport (siehe unten). Wenn Sie das verständlicherweise nicht möchten, würde ich immer noch eine integrierte Konvertierung verwenden:
String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
System.out.println(ts);
Dies ist die gleiche Antwort wie von Sealskej. Die Ausgabe ist dieselbe wie zuvor.
Ja, java.time funktioniert gut auf älteren und neueren Android-Geräten. Es erfordert nur mindestens Java 6 .
org.threeten.bp
Zeitklassen mit Unterpaketen importieren.java.time
.java.time
zuerst beschrieben wurde.java.time
Java 6 und 7 (ThreeTen für JSR-310).Ich schlage vor, die Antwort von Hits zu verwenden, aber ein Gebietsschema-Format hinzuzufügen, so empfehlen Android-Entwickler :
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;
}
Dieser Code ist eine Kotlin-Version. Ich habe eine andere Idee, eine zufällige Shuffle-Ganzzahl in die letzte Ziffer einzufügen, um die Varianz-Epochenzeit anzugeben.
Kotlin-Version
val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance
val deltaEpoch = oldEpoch - currentEpoch
Ich denke, es wird besser sein, diesen Kode zu verwenden, als von Android Version 26 oder mehr abhängig zu sein
java.util.Date
,java.util.Calendar
undTimestamp
sind jetzt Erbe, durch die verdrängte java.time Klassen. Die meisten Funktionen von java.time werden im ThreeTen-Backport- Projekt auf Java 6 und Java 7 zurückportiert . Weiter angepasst für frühere Android im ThreeTenABP- Projekt. Siehe Verwendung von ThreeTenABP… .