Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Convertire data da locale ad UTC

    Salve. Quello che voglio fare è, data una stringa rappresentante una data, ottenere la stringa
    che rappresenta la stessa data convertita in UTC.

    Questo è quello che ho scritto:

    codice:
    String dateLocal = groundTruthData[0] + " " + groundTruthData[1]; // data in LOCALE
                    //System.out.println("before: " + dateLocal);
                    
                    Calendar calendar = new GregorianCalendar();
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
                    sdf.setCalendar(calendar);
                    Date myDate = sdf.parse(dateLocal);
                    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
                    calendar.setTime(myDate);
                    
                    System.out.println("after: " + sdf.format(calendar.getTime()));
    Se la data iniziale è:
    2016-10-30 07:05:10.764, la seconda print stampa 2016-10-30 06:05:10.764

    Volevo sapere se è corretto e se il codice è semplificabile.

    Update

    codice:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    				Date localDate = sdf.parse(dateLocal);
    				sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    				String UTCDateTime = sdf.format(localDate);
    Ultima modifica di Javino89; 30-10-2016 a 17:44

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Sì, la questione è solo quella di applicare il TimeZone per il parse e/o il format. In entrambi i casi si può specificare un TimeZone esplicito o usare quello di "default" del sistema (se è quello che si vuole, ovviamente).

    Ecco un esempio più completo:

    codice:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
    
    String oraNewYork = "2016-10-31 10:30:00.000";
    sdf.setTimeZone(TimeZone.getTimeZone("America/New_York"));
    Date d = sdf.parse(oraNewYork);
    
    sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
    String oraUTC = sdf.format(d);
    
    sdf.setTimeZone(TimeZone.getTimeZone("Europe/Rome"));
    String oraItalia = sdf.format(d);
    
    System.out.println("New York: " + oraNewYork);
    System.out.println("UTC     : " + oraUTC);
    System.out.println("Italia  : " + oraItalia);

    Output:
    codice:
    New York: 2016-10-31 10:30:00.000
    UTC     : 2016-10-31 14:30:00.000
    Italia  : 2016-10-31 15:30:00.000
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.