2011-09-02 23 views
9

Ho un problema per ordinare data a causa del formato di queste date.Android: formato data in una stringa

ottengo la data:

final Calendar c = Calendar.getInstance(); 
    mYear = c.get(Calendar.YEAR); 
    mMonth = c.get(Calendar.MONTH); 
    mDay = c.get(Calendar.DAY_OF_MONTH); 

E creare una stringa con questi valori.

dateRappDB = (new StringBuilder() 
    .append(mYear).append(".") 
    .append(mMonth + 1).append(".") 
    .append(mDay).append(" ")).toString(); 

Il problema è che se il mese è per esempio febbraio valore mMonth è 2. Quindi, date con mesi come ottobre (10) viene prima nella mia lista.

Quello che mi serve è che mese e giorno siano formati come MM e dd. Ma non so come farlo nel mio caso.

EDIT:

ho risolto il problema utilizzando un DateFormat come detto sopra.

ho sostituito questo:

dateRappDB = (new StringBuilder() 
    .append(mYear).append(".") 
    .append(mMonth + 1).append(".") 
    .append(mDay).append(" ")).toString(); 

Con questo:

Date date = new Date(mYear - 1900, mMonth, mDay); 
dateFacDB = DateFormat.format("yyyy.MM.dd", date).toString(); 

e funziona. Grazie a tutti voi per il vostro aiuto :)

+2

provare questo: http: // StackOverflow.com/domande/7165901/android-data-e-tempo-formato http://stackoverflow.com/questions/6705031/how-to-format-a-date http: // StackOverflow. it/questions/6520553/data-and-time-format –

risposta

3

È necessario ordinare le date, non le stringhe. Inoltre, hai sentito parlare di DateFormat? Rende tutto ciò che aggiunge per te.

+0

Io in secondo luogo questa soluzione, a meno che per qualche motivo non detto tu abbia davvero bisogno di lavorare con quelle stringhe ... ma ernazm colpisce il chiodo in testa: usa le classi di Android: D – Kheldar

0

Se ho capito il tuo problema, crei un elenco di date e dal momento che sono stringhe, vengono ordinate in ordine di numero in base al numero, il che significa che devi arrivare prima di febbraio (10 prima delle 2).

Se fossi in te, memorizzerei i risultati in un contenitore in cui controllo il punto di inserimento (come un elenco di array) o dove posso controllare l'algoritmo di ordinamento.

1

qui è l'esempio per il formato della data

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
Date date = new Date(); 

System.out.println("format 1 " + sdf.format(date)); 

sdf.applyPattern("E MMM dd yyyy"); 
System.out.println("format 2 " + sdf.format(date)); 
13

ecco un modo semplice per convertire Data di stringa:

SimpleDateFormat simpleDate = new SimpleDateFormat("dd/MM/yyyy");

String strDt = simpleDate.format(dt);

7
Calendar calendar = Calendar.getInstance(); 
Date now = calendar.getTime(); 
String timestamp = simpleDateFormat.format(now); 

Queste potrebbero venire in maneggevole

SimpleDateFormat simpleDateFormat = 
    new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZZZZZ"); 

questo formato è uguale a -> "2016-01-01T09: 30: 00.000000 + 01: 00"

SimpleDateFormat simpleDateFormat = 
    new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ"); 

questo formato è uguale a -> "2016-06-01T09 : 30: 00 + 01: 00 "

Problemi correlati