Autore Topic: Ottenere la data e l\'ora dal sistema android per fare un confronto  (Letto 315 volte)

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 316
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
0
Salve a tutti!

Penso di avere un problema abbastanza semplice ma in cui mi sto ingarbugliando.

Voglio ottenere da sistema la data e l'ora per poi confrontarla con una data che ottengo da php.
La data del php ha questo formato: 2015-12-16 11:39:23

Avete suggerimenti? quale sarebbe la soluzione migliore?

Grazie mille in anticipo!

Post unito: [time]16 Dicembre 2015, 11:25:26 CET[/time]
OK ho risolto!

bastava una cosa semplicissima come questa:
Codice (Java): [Seleziona]
   Calendar c = Calendar.getInstance();
        System.out.println("Current time => " + c.getTime());

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        String formattedDate = df.format(c.getTime());

Ora però come metto a confronto le due date String?
« Ultima modifica: 16 Dicembre 2015, 11:41:31 CET da ValerioAdo, Reason: Merged DoublePost »

Offline Ohmnibus

  • Utente senior
  • ****
  • Post: 596
  • Respect: +133
    • Google+
    • @ohmnibus
    • Mostra profilo
    • Lords of Knowledge GdR
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    Ohmnibus
  • Sistema operativo:
    Windows 7 x64
Re:Ottenere la data e l\'ora dal sistema android per fare un confronto
« Risposta #1 il: 17 Dicembre 2015, 10:22:17 CET »
0

Suggerimento: non convertire in stringa per eseguire un confronto. Generalmente è male.

Prova:

Codice (Java): [Seleziona]
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());
Date ref = df.parse(stringa_data_da_php);
Date now = new Date();
//Ora puoi usare
now.after(ref); //Indica se "now" è successivo a "ref"
now.before(ref); //Indica se "now" è antecedente a "ref"
now.compareTo(ref); //Restituisce un intero:
        //0 se sono uguali
        //< 0 se "now" è antecedente a "ref"
        //> 0 se "now" è successivo a "ref"

Attenzione! Nella data restituita dalla pagina PHP non è specificato il fuso orario!
Per evitare problemi dovresti far restituire una data nel formato
2015-12-16 11:39:23Z (fuso orario UTC)
2015-12-16 11:39:23+0200 (fuso orario locale, con ora legale)
e cambiare anche il formato accettato dal SimpleDateFormat in
Codice (Java): [Seleziona]
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ", Locale.getDefault());
Ohmnibus
Le mie app su Play Store

È stata trovata una soluzione al tuo problema? Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato.

Offline ValerioAdo

  • Utente normale
  • ***
  • Post: 316
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Huawei Ascend g525
  • Sistema operativo:
    windows 8.1
Re:Ottenere la data e l\'ora dal sistema android per fare un confronto
« Risposta #2 il: 17 Dicembre 2015, 10:41:49 CET »
0
Al momento uso questo metodo:
Codice (Java): [Seleziona]
 Calendar c = Calendar.getInstance();
        System.out.println("Current time => " + c.getTime());

        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date data1=c.getTime();
        String formattedDate = df.format(c.getTime());
        Date2="2015-12-11 10:39:23";

        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date convertedDate = new Date();
        try {
            convertedDate = dateFormat.parse(Date2);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        if (data1.compareTo(convertedDate)<0)
        {
            System.out.println("date2 is Greater than my date1");
            return false;

        }
        else{
            System.out.println("date1 is Greater than my date2");
            return true;
        }

Ora provo il tuo, grazie mille del suggerimento!