Comment convertir une chaîne Date en millsecondes longues


Réponses:


154

Utilisation de SimpleDateFormat

String string_date = "12-December-2012";

SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
    Date d = f.parse(string_date);
    long milliseconds = d.getTime();
} catch (ParseException e) {
    e.printStackTrace();
}

16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();

11

Il est temps que quelqu'un fournisse la réponse moderne à cette question. En 2012, lorsque la question a été posée, les réponses publiées à l'époque étaient également de bonnes réponses. Pourquoi les réponses publiées en 2016 utilisent également les classes alors obsolètes SimpleDateFormatet Datesont un peu plus un mystère pour moi. java.time, l'API de date et d'heure Java moderne également connue sous le nom de JSR-310, est tellement plus agréable à utiliser. Vous pouvez l'utiliser sur Android via le ThreeTenABP, voir cette question: Comment utiliser ThreeTenABP dans Android Project .

Dans la plupart des cas, je recommande d'utiliser les millisecondes depuis l'époque du début de la journée en UTC . Pour les obtenir:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
    String stringDate = "12-December-2012";
    long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
            .atStartOfDay(ZoneOffset.UTC)
            .toInstant()
            .toEpochMilli();
    System.out.println(millisecondsSinceEpoch);

Cela imprime:

1355270400000

Si vous avez besoin de l'heure de début de journée dans un fuseau horaire spécifique, spécifiez ce fuseau horaire au lieu de UTC, par exemple:

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

Comme prévu, cela donne un résultat légèrement différent:

1355252400000

Un autre point à noter, n'oubliez pas de fournir une locale à votre DateTimeFormatter. J'ai pris décembre pour anglais, il y a d'autres langues où ce mois s'appelle le même, alors veuillez choisir vous-même le lieu approprié. Si vous ne fournissez pas de paramètres régionaux, le formateur utilise le paramètre de paramètres régionaux de la machine virtuelle Java, qui peut fonctionner dans de nombreux cas, puis échoue de manière inattendue un jour lorsque vous exécutez votre application sur un appareil avec un paramètre de paramètres régionaux différent.


9

Jetez un œil à la SimpleDateFormatclasse qui peut analyser a Stringet renvoyer a Dateet la getTimeméthode de la Dateclasse.



3

vous pouvez utiliser le simpleDateFormat pour analyser la date de chaîne.


1

Le moyen le plus simple est d'utiliser la date en utilisant la date () et getTime ()

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)

1

en utilisant simpledateformat, vous pouvez facilement y parvenir.

1) Commencez par convertir la chaîne en java.Date en utilisant simpledateformatter.

2) Utilisez la méthode getTime pour obtenir le nombre de millisecondes à partir de la date

 public class test {
      public static void main(String[] args) {
      String currentDate = "01-March-2016";
      SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
     Date parseDate = f.parse(currentDate);
     long milliseconds = parseDate.getTime();
  }
        }

plus Exemple cliquez ici


0

Essayez ci-dessous le code

        SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
        Date d = null;
        try {
            d = f.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        long timeInMillis = d.getTime();
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.