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();
}
Jon Lin
la source
16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
Bélier Kiran
la source
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.

Ole VV
la source
9

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

Averroès
la source
7
  • Convertissez d'abord la chaîne en java.util.Dateutilisant le formateur de date
  • Utilisez getTime () pour obtenir le nombre de millisecondes à partir de la date
Dmitriy Tarasov
la source
3

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

XepterX
la source
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)
Saranga kapilarathna
la source
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

Ankit jain
la source
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();
subrahmanyam boyapati
la source