Come convertire una data stringa in lunghi millsecondi


Risposte:


154

Utilizzando 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();
}

16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();

11

È ora che qualcuno fornisca la risposta moderna a questa domanda. Nel 2012, quando è stata posta la domanda, anche le risposte pubblicate allora erano buone risposte. Perché le risposte pubblicate nel 2016 usano anche le classi allora obsolete SimpleDateFormated Dateè un po 'più un mistero per me. java.time, la moderna API di data e ora Java nota anche come JSR-310, è molto più piacevole da utilizzare. Puoi usarlo su Android tramite ThreeTenABP, vedi questa domanda: Come usare ThreeTenABP in Android Project .

Per la maggior parte degli scopi, consiglio di utilizzare i millisecondi dall'epoca all'inizio della giornata in UTC . Per ottenerli:

    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);

Questo stampa:

1355270400000

Se richiedi l'ora di inizio giornata in un fuso orario specifico, specifica quel fuso orario invece di UTC, ad esempio:

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

Come previsto, questo dà un risultato leggermente diverso:

1355252400000

Un altro punto da notare, ricorda di fornire una localizzazione al tuo DateTimeFormatter. Pensavo che dicembre fosse inglese, ci sono altre lingue in cui quel mese si chiama lo stesso, quindi per favore scegli tu stesso la lingua giusta. Se non hai fornito una locale, il formattatore userebbe l'impostazione della locale della JVM, che può funzionare in molti casi, e quindi un giorno inaspettatamente fallire quando esegui la tua app su un dispositivo con un'impostazione locale diversa.


9

Dai un'occhiata alla SimpleDateFormatclasse che può analizzare a Stringe restituire a Datee il getTimemetodo di Dateclasse.



3

è possibile utilizzare simpleDateFormat per analizzare la data della stringa.


1

Il modo più semplice è utilizzare Date Using Date () e getTime ()

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)

1

usando simpledateformat puoi facilmente raggiungerlo.

1) Prima converti la stringa in java.Date usando simpledateformatter.

2) Utilizzare il metodo getTime per ottenere il conteggio dei millisec dalla data

 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();
  }
        }

altro Esempio clicca qui


0

Prova sotto il codice

        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();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.