Je veux obtenir l'horodatage actuel comme ça: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Je veux obtenir l'horodatage actuel comme ça: 1320917972
int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts = tsTemp.toString();
Réponses:
Du blog des développeurs:
System.currentTimeMillis()
est l'horloge "murale" standard (heure et date) exprimant les millisecondes depuis l'époque. L'horloge murale peut être réglée par l'utilisateur ou le réseau téléphonique (voir setCurrentTimeMillis (long) ), de sorte que l'heure peut reculer ou avancer de façon imprévisible. Cette horloge ne doit être utilisée que lorsque la correspondance avec des dates et des heures réelles est importante, comme dans un calendrier ou une application de réveil. Les mesures d'intervalle ou de temps écoulé doivent utiliser une horloge différente. Si vous utilisez System.currentTimeMillis()
, envisagez l' écoute de la ACTION_TIME_TICK
, ACTION_TIME_CHANGED
et les ACTION_TIMEZONE_CHANGED
émissions intention de savoir quand le temps change.
System.nanoTime()
c'est une alternative à System.currentTimeMillis()
et il n'a pas de fluctuations imprévisibles, et est conçu pour mesurer les différences de durée.
System.nanoTime()
ne convient pas pour afficher l'heure de l'horloge murale. À cette fin, utilisez System.currentTimeMillis()
plutôt.
1320917972 est l'horodatage Unix utilisant le nombre de secondes depuis 00:00:00 UTC le 1er janvier 1970. Vous pouvez utiliser la TimeUnit
classe pour la conversion d'unité - de System.currentTimeMillis()
à secondes.
String timeStamp = String.valueOf(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()));
Vous pouvez utiliser la classe SimpleDateFormat :
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 une utilisation simple:
long millis = new Date().getTime();
si vous le voulez 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, juste au cas où quelqu'un aurait besoin de la même chose que celle dont j'avais besoin:
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;
}
}
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);
Je voudrais apporter la réponse moderne.
String ts = String.valueOf(Instant.now().getEpochSecond());
System.out.println(ts);
Sortie lors de l'exécution tout à l'heure:
1543320466
Bien que la division par 1000 ne soit pas une surprise pour beaucoup, faire vos propres conversions de temps peut être difficile à lire assez rapidement, donc c'est une mauvaise habitude de prendre quand vous pouvez l'éviter.
La Instant
classe que j'utilise fait partie de java.time, l'API Java moderne de date et d'heure. Il est intégré aux nouvelles versions d'Android, API niveau 26 et plus. Si vous programmez pour un ancien Android, vous pouvez obtenir le backport, voir ci-dessous. Si vous ne voulez pas le faire, il est compréhensible que j'utilise toujours 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 qu'avant.
Oui, java.time fonctionne bien sur les appareils Android plus anciens et plus récents. Il nécessite juste au moins Java 6 .
org.threeten.bp
avec des sous-packages.java.time
.java.time
été décrit pour la première fois.java.time
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 les développeurs Android recommandent :
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;
}
Ce code est la version Kotlin. J'ai une autre idée d'ajouter un entier aléatoire au dernier chiffre pour donner le temps de l'époque de la variance.
Version Kotlin
val randomVariance = (0..100).shuffled().first()
val currentEpoch = (System.currentTimeMilis()/1000) + randomVariance
val deltaEpoch = oldEpoch - currentEpoch
Je pense qu'il vaudra mieux utiliser ce kode puis dépendre de la version Android 26 ou plus
java.util.Date
,java.util.Calendar
etTimestamp
sont maintenant héritage, supplanté par les java.time classes. La plupart des fonctionnalités java.time sont rétroportées vers Java 6 et Java 7 dans le projet ThreeTen-Backport . Adapté davantage pour les versions antérieures d'Android dans le projet ThreeTenABP . Voir Comment utiliser ThreeTenABP… .