Je veux obtenir le timestamp actuel comme ça: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
La solution est:
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
Du blog des développeurs:
System.currentTimeMillis()
est l’horloge «murale» standard (heure et date) exprimant des millisecondes depuis l’époque. L'horloge murale peut être réglée par l'utilisateur ou par le réseau téléphonique (voir setCurrentTimeMillis (long) ), afin que le temps puisse avancer ou reculer de manière imprévisible. Cette horloge ne doit être utilisée que lorsque la correspondance avec les dates et heures du monde réel est importante, par exemple dans une application de calendrier ou de réveil. Les mesures d'intervalle ou de temps écoulé doivent utiliser une horloge différente. Si vous utilisez System.currentTimeMillis()
, envisagez d’écouter les émissions ACTION_TIME_TICK
, ACTION_TIME_CHANGED
et ACTION_TIMEZONE_CHANGED
Intent pour connaître le changement d’heure.
1320917972 est un horodatage Unix utilisant le nombre de secondes écoulé depuis le 1er janvier 1970 à 00:00:00 UTC. Vous pouvez utiliser la classe TimeUnit
pour la conversion d'unités - de System.currentTimeMillis()
à secondes.
String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
Vous pouvez utiliser la classe SimpleDateFormat class:
SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
Utilisez la méthode ci-dessous pour obtenir l’horodatage actuel. Ça fonctionne bien pour moi.
/**
*
* @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;
}
}
C'est simple d'utilisation:
long millis = new Date().getTime();
si vous le souhaitez dans un format particulier, vous avez besoin d'un formateur comme ci-dessous
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String millisInString = dateFormat.format(new Date());
Voici un horodatage lisible par l'homme qui peut être utilisé dans un nom de fichier, Au cas où quelqu'un aurait besoin de la même chose que moi
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;
}
}
Solution à Kotlin:
val nowInEpoch = Instant.now().epochSecond
Assurez-vous que votre version minimale du SDK est 26.
Je voudrais apporter la réponse moderne.
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
Sortie en cours d'exécution tout à l'heure:
1543320466
Bien que diviser par 1 000 ne soit pas une surprise pour beaucoup, faire la lecture à votre rythme peut être difficile à lire assez rapidement, c’est donc une mauvaise habitude à prendre pour l’éviter.
La classe Instant
que j'utilise fait partie de Java.time, l'API de date et heure moderne de Java. Il est intégré aux nouvelles versions d’Android, API de niveau 26 et supérieur. Si vous programmez pour un ancien Android, vous pouvez obtenir le backport, voir ci-dessous. Si vous ne voulez pas faire cela, naturellement, j'utiliserais quand même une conversion intégrée:
String ts = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
System.out.println(ts);
C’est la même chose que la réponse de sealskej. La sortie est la même que précédemment.
Oui, Java.time fonctionne bien sur les appareils Android anciens et récents. Cela nécessite juste au moins Java 6.
org.threeten.bp
avec des sous-packages.Java.time
.Java.time
a été décrit pour la première fois.Java.time
vers Java 6 et 7 (ThreeTen pour JSR-310).Je suggère d'utiliser la réponse de Hits, mais en ajoutant un format de paramètres régionaux, voici comment Android Développeurs recommande :
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;
}
Juste utiliser
long millis = new Date().getTime();
pour obtenir l'heure actuelle en millisimes longs
Essayez ces
time.setText(String.valueOf(System.currentTimeMillis()));
et timeStamp au format de l'heure
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(time.getText().toString())));
time.setText(dateString);