J’ai une date dans une chaîne, quelque chose comme “12 décembre 2012”. Comment puis-je convertir cela en millisecondes (long)?
Utiliser SimpleDateFormat
Ssortingng ssortingng_date = "12-December-2012"; SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy"); try { Date d = f.parse(ssortingng_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 oeil à la classe SimpleDateFormat
qui peut parsingr une Ssortingng
et retourner une Date
et la méthode getTime
de la classe Date
.
java.util.Date
utilisant le formateur de date Il est temps que quelqu’un apporte la réponse moderne à cette question. En 2012, lorsque la question a été posée, les réponses affichées à l’époque étaient de bonnes réponses. Pourquoi les réponses postées en 2016 utilisent-elles également les classes alors obsolètes SimpleDateFormat
et Date
est un peu plus mystérieux pour moi. java.time
, l’API moderne de date et heure Java, également connue sous le nom de JSR-310, est tellement plus agréable à utiliser. Vous pouvez l’utiliser sur Android via ThreeTenABP, voir 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); Ssortingng ssortingngDate = "12-December-2012"; long millisecondsSinceEpoch = LocalDate.parse(ssortingngDate, 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 horaire au lieu de l’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 un paramètre régional à votre DateTimeFormatter
. J’ai pris le mois de décembre pour être en anglais, il y a d’autres langues où ce mois est appelé le même, alors veuillez choisir vous-même les parameters régionaux. Si vous ne fournissez pas de parameters régionaux, le formateur utilisera les parameters régionaux de la JVM, qui peuvent fonctionner dans de nombreux cas, puis échouera de manière inattendue un jour lorsque vous exécuterez votre application sur un périphérique avec des parameters régionaux différents.
Vous pouvez utiliser le simpleDateFormat pour parsingr 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 millisecs à partir de la date
public class test { public static void main(Ssortingng[] args) { Ssortingng currentDate = "01-March-2016"; SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy"); Date parseDate = f.parse(currentDate); long milliseconds = parseDate.getTime(); } }
plus exemple cliquez ici
La manière la plus simple est d’utiliser la date en utilisant Date () et getTime ()
Date dte=new Date(); long milliSeconds = dte.getTime(); Ssortingng strLong = Long.toSsortingng(milliSeconds); System.out.println(milliSeconds)
Essayez ci-dessous le code
SimpleDateFormat f = new SimpleDateFormat("your_ssortingng_format", Locale.getDefault()); Date d = null; try { d = f.parse(date); } catch (ParseException e) { e.printStackTrace(); } long timeInMillis = d.getTime();