Comment convertir une chaîne Date en longues millisecondes

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 .

  • Convertissez d’abord la chaîne en java.util.Date utilisant le formateur de date
  • Utilisez getTime () pour obtenir le nombre de millisecs à partir de la 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();