2014-09-30 9 views
6

Ho bisogno di convertire una stringa nel formato "gg/mm/aaaa", in un tipo lungo. Per passare il valore al calendarProvider in Android.Conversione Android/Java Stringa data a tipo lungo

Attualmente ho:

Calendar calendar = Calendar.getInstance(); 
long startEndDate = 0; 
Calendar currentDateInfo = Calendar.getInstance(); 
currentDateInfo.set(calendar.get(Calendar.YEAR), calendar.SEPTEMBER, calendar.get(Calendar.DAY_OF_MONTH)); 
startEndDate = currentDateInfo.getTimeInMillis(); 

Ho bisogno:

long startDate = *Some sort of conversion* EditText.getText(); 

Ho provato con SimpleDateFormat ma sto avendo problemi ricevendo il tipo corretto di nuovo. Qualsiasi aiuto sarebbe molto apprezzato.

+0

Mostra il tuo tentativo di usare 'SimpleDateFormat' - è il modo corretto di andare. –

risposta

18

È possibile utilizzare il seguente codice per ottenere un valore lungo (millisecondi dal 1 gennaio 1970, 00:00:00 GMT) da una data stringa con il formato "gg/mm/aaaa".

try { 
    String dateString = "30/09/2014"; 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
    Date date = sdf.parse(dateString); 

    long startDate = date.getTime(); 

} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

Grazie mille. –

+0

@Ken Wolf È possibile combinare due stringhe separate, una stringa di data e una stringa di una volta in una stringa (ad esempio, "30/09/2014" e "10:00 PM" in "30/09/2014 10: 00 PM "per ottenere un valore lungo dalla stringa combinata? La stringa di data è il formato" gg/mm/aaaa "e l'ora Stringa è il formato" h: mm a ". – AJW

+1

Sì, questo è possibile - stai solo combinando 2 stringhe per fare 1 stringa e analizzarla. Dovrai assicurarti che entrambe le stringhe aderiscano alla formattazione corretta –

2

Usa come questo il codice

String[] dateArray = dateString.split("-"); 

int year = Integer.parseInt(dateArray[0]); 
int month = Integer.parseInt(dateArray[1]); 
int date = Integer.parseInt(dateArray[2]); 

GregorianCalendar gc = new GregorianCalendar(year,month,date); 
long timeStamp = gc.getTimeInMillies();