Ho una data all'interno di una stringa, qualcosa come "12 dicembre 2012". Come posso convertirlo in millisecondi (lungo)?Come convertire una stringa Data in millisecondi lunghi
risposta
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();
}
Date un'occhiata a SimpleDateFormat
classe che può analizzare un String
e restituire un Date
e il metodo di Date
classe getTime
.
è possibile utilizzare simpleDateFormat per analizzare la data della stringa.
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
modo più semplice è utilizzata la data Utilizzo di Date() e get Ora()
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
utilizzando simpledateformat è possibile raggiungerlo facilmente.
1) Prima convertire la stringa in java.Date utilizzando semplicedateformatter.
metodo2) Utilizzare getTime per ottenere il conto di millisecs 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();
}
}
più Esempio clicca here
Prova sottostante 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();
E 'ora che qualcuno fornisce la risposta moderna alla questa domanda. Nel 2012, quando è stata posta la domanda, le risposte riportate anche allora erano buone risposte. Perché le risposte pubblicate nel 2016 utilizzano anche le classi da lungo tempo obsolete SimpleDateFormat
e Date
è un po 'più un mistero per me. java.time
, la moderna API data e ora Java nota anche come JSR-310, è molto più carina con cui lavorare. Puoi usarlo su Android tramite ThreeTenABP, vedi this question: How to use ThreeTenABP in Android Project.
Per la maggior parte degli scopi, si consiglia di utilizzare i millisecondi dall'epoca all'inizio del giorno in UTC.Per ottenere questi:
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 si richiede l'ora all'inizio della giornata in qualche fuso orario specifico, specificare che il 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 un locale al tuo DateTimeFormatter
. Ho preso dicembre per essere inglese, ci sono altre lingue in cui quel mese è chiamato lo stesso, quindi per favore scegli il locale appropriato. Se non hai fornito una locale, il formattatore userebbe l'impostazione locale della JVM, che potrebbe funzionare in molti casi, e poi inaspettatamente fallire un giorno quando si esegue l'app su un dispositivo con impostazioni internazionali diverse.