Autore Topic: Joda time parsing data  (Letto 449 volte)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1231
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Joda time parsing data
« il: 26 Aprile 2016, 13:49:27 CEST »
0
Salve.

Ho dei dati del tipo String esempio: "10-05-2016 20:00"
L'orario è riferito ad un paese. Inoltre so anche il fuso orario di quel paese. Quindi in totale ho 2 dati, la stringa data+orario e un intero che esprime il fuso.

Devo ricavaere un oggetto di tipo DateTime.
Cosi dovrei poter fare:
Codice (Java): [Seleziona]
DateTime dt = ....codice..che..non..so
miaTexView.setText(""+dt.hoursOfDay().getAsString()+" "+dt.years().getAsString()):

Eppure continuo ad avere orari sbagliati.

Offline pietroconti89

  • Utente normale
  • ***
  • Post: 164
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3 N9005
  • Sistema operativo:
    Windows / Mac OSX
Re:Joda time parsing data
« Risposta #1 il: 26 Aprile 2016, 14:37:42 CEST »
0
prova questo
Codice (Java): [Seleziona]
String s = "03/24/2013 21:54";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/dd/yyyy HH:mm");
        try
        {
            Date date = simpleDateFormat.parse(s);

            System.out.println("date : "+simpleDateFormat.format(date));
        }
        catch (ParseException ex)
        {
            System.out.println("Exception "+ex);
        }

trovato su google ... qui usa le " / " invece che " - "  , ma ti basta fare un s.replaceAll("-","/")

Post unito: [time]26 Aprile 2016, 14:38:59 CEST[/time]
magari lo organizzi con uno switch a monte e in base a l'intero di controllo che hai cambierai  semplicemente la forma qui
Codice (Java): [Seleziona]
new SimpleDateFormat("MM/dd/yyyy HH:mm");
Post unito: 26 Aprile 2016, 14:43:51 CEST
poi te lo converti in DateTime con
Codice (Java): [Seleziona]
 DateTime dateTime = new DateTime(date);
« Ultima modifica: 26 Aprile 2016, 14:43:52 CEST da pietroconti89, Reason: Merged DoublePost »

Offline LinkOut

  • Utente normale
  • ***
  • Post: 272
  • Respect: +38
    • Mostra profilo
  • Dispositivo Android:
    Xiaomi Mi5
Re:Joda time parsing data
« Risposta #2 il: 26 Aprile 2016, 15:17:43 CEST »
0
Salve.

Ho dei dati del tipo String esempio: "10-05-2016 20:00"
L'orario è riferito ad un paese. Inoltre so anche il fuso orario di quel paese. Quindi in totale ho 2 dati, la stringa data+orario e un intero che esprime il fuso.

Devo ricavaere un oggetto di tipo DateTime.
Cosi dovrei poter fare:
Codice (Java): [Seleziona]
DateTime dt = ....codice..che..non..so
miaTexView.setText(""+dt.hoursOfDay().getAsString()+" "+dt.years().getAsString()):

Eppure continuo ad avere orari sbagliati.

I dati che ti arrivano li puoi modificare?

L'approccio più corretto è ricevere i dati in formato GMT (ovvero senza fuso orario) ed il client trasforma questa stringa in LOCALE, così si aggiunge il fuso orario in base allo stato.

Visto che tu hai 2 dati comunque secondo me dovresti trasformare in oggetto Date la stringa della data e usare il metodo plusHours(int hours); per aggiungere il "locale", non è bellissimo come approccio secondo me.

Esempio:
Codice (Java): [Seleziona]
String date = "10-05-2016 20:00"; //Esempio di orario GMT
DateTimeFormatter formatter = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm");
DateTime dt = formatter.parseDateTime(date);
dt.plusHours(2);// Esempio +2 equivale a GMT +2 (Ora attuale italiana)

PS: quando cambia poi l'ora e l'italia sarà GMT +1, ti arriva il dato aggiornato? :P
« Ultima modifica: 26 Aprile 2016, 15:22:32 CEST da LinkOut, Reason: Aggiunti commenti »