J'ai une date dans une chaîne, quelque chose comme "12-Décembre-2012". Comment puis-je la convertir en millisecondes (longues) ?
Réponses
Trop de publicités?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();
}
Il est grand temps que quelqu'un apporte une réponse moderne à cette question. En 2012, lorsque la question a été posée, les réponses également postées à l'époque étaient de bonnes réponses. Pourquoi les réponses postées en 2016 utilisent également les classes alors dépassées depuis longtemps. SimpleDateFormat
y Date
est un peu plus un mystère pour moi. java.time
L'API moderne de date et d'heure de Java, également connue sous le nom de JSR-310, est tellement plus agréable à utiliser. Vous pouvez l'utiliser sur Android par le biais de ThreeTenABP. cette question : Comment utiliser ThreeTenABP dans un projet Android ? .
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);
Cette empreinte :
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 à vos DateTimeFormatter
. J'ai pris le mois de décembre pour l'anglais, il y a d'autres langues où ce mois est appelé de la même façon, alors choisissez vous-même la bonne localisation. Si vous ne fournissiez pas de paramètres régionaux, le formateur utiliserait les paramètres régionaux de la JVM, ce qui pourrait fonctionner dans de nombreux cas, mais échouerait un jour de manière inattendue si vous exécutez votre application sur un appareil dont les paramètres régionaux sont différents.
- Réponses précédentes
- Plus de réponses