web-dev-qa-db-fra.com

Android Obtenir l'horodatage actuel?

Je veux obtenir le timestamp actuel comme ça: 1320917972

int time = (int) (System.currentTimeMillis());
Timestamp tsTemp = new Timestamp(time);
String ts =  tsTemp.toString();
202
Rjaibi Mejdi

La solution est:

Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
241
Rjaibi Mejdi

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. 

78
drooooooid

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()));
27
sealskej

Vous pouvez utiliser la classe SimpleDateFormat class:

SimpleDateFormat s = new SimpleDateFormat("ddMMyyyyhhmmss");
String format = s.format(new Date());
22
Pratik Butani

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;
    }
}
21
Hits

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());
10
Pranav

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;
    }

}
8

Solution à Kotlin:

val nowInEpoch = Instant.now().epochSecond

Assurez-vous que votre version minimale du SDK est 26.

1
DSavi

Java.time

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.

Question: Puis-je utiliser Java.time sur Android?

Oui, Java.time fonctionne bien sur les appareils Android anciens et récents. Cela nécessite juste au moins Java 6.

  • Dans Java 8 et versions ultérieures et sur les appareils Android récents (à partir de l'API de niveau 26), l'API moderne est intégrée.
  • En Java 6 et 7, obtenez ThreeTen Backport, le backport des nouvelles classes (ThreeTen pour JSR 310; voir les liens en bas).
  • Sous Android (plus ancien), utilisez l’édition Android de ThreeTen Backport. Il s’appelle ThreeTenABP. Et assurez-vous d'importer les classes de date et d'heure à partir de org.threeten.bp avec des sous-packages.

Liens

1
Ole V.V.

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;
    }
0
Faustino Gagneten

Juste utiliser

long millis = new Date().getTime();

pour obtenir l'heure actuelle en millisimes longs

0
Bilal Ahmad

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);
0
Mujahid khan