J'ai une date dans une chaîne, quelque chose comme "12 décembre 2012". Comment puis-je convertir cela en millisecondes (long)?
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();
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
Jetez un coup d'œil à SimpleDateFormat
class qui peut analyser un String
et renvoyer un Date
et la méthode getTime
de Date
class.
Java.util.Date
avec la date formateurIl est temps que quelqu'un fournisse la réponse moderne à cette question. En 2012, lorsque la question a été posée, les réponses également affichées à l'époque étaient de bonnes réponses. Pourquoi les réponses postées en 2016 utilisent également les classes alors obsolètes SimpleDateFormat
et Date
est un peu plus un mystère pour moi. Java.time
, l'API Java date et heure moderne, également appelé JSR-310, est beaucoup plus agréable à utiliser. Vous pouvez l'utiliser sur Android via ThreeTenABP, voir cette question: Comment utiliser ThreeTenABP dans Android Project .
Dans la plupart des cas, je vous recommande d’utiliser les millisecondes depuis l’époque au 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 au début de la journée dans un fuseau horaire spécifique, spécifiez ce fuseau au lieu de l'heure 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, pensez à fournir des paramètres régionaux à votre DateTimeFormatter
. En décembre, j’ai pris l’anglais. Il existe d’autres langues où ce mois-ci s’appelle le même. Veuillez donc choisir vous-même les paramètres régionaux. 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 périphérique avec un paramètre de paramètres régionaux différent.
vous pouvez utiliser la méthode simpleDateFormat pour analyser la date de la chaîne.
en utilisant simpledateformat, vous pouvez facilement y parvenir.
1) Convertissez d’abord 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