2016-04-20 4 views
0

Ich versuche, den Zeitstempel von einem Datum zu bekommen. Aber ich versuche, den lokalen Zeitstempel zu bekommen, aber das Ereignis, das die Zeitzone einstellt, bekomme ich immer noch den Zeitstempel in UTC.Get Local Timestamp funktioniert nicht Android

Das ist mein Code:

public static Long dateToTimestamp(String dateFormat) { 
     SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
     formatter.setTimeZone(TimeZone.getDefault()); 
     Log.e("AQM", TimeZone.getDefault().getDisplayName()); 
     try { 
      Date date = formatter.parse(dateFormat); 
      return date.getTime()/1000; 
     } catch (ParseException e) { 
      return Long.parseLong("0"); 
     } 
    } 

Dies sind die Protokolle:

04-19 23:11:01.751 4593-4593/br.com.vitorvillar.aquariummanager E/AQM: 20/04/2016 23:10 
04-19 23:11:01.751 4593-4593/br.com.vitorvillar.aquariummanager E/AQM: Brasilia Standard Time 
04-19 23:11:01.751 4593-4593/br.com.vitorvillar.aquariummanager E/AQM: Brasilia Standard Time 
04-19 23:11:01.761 4593-4593/br.com.vitorvillar.aquariummanager E/AQM: 1461204600 

Das Datum und die Zeitzone ist in Ordnung, die Zeitzone Brasilia Standard Time ist, aber der Zeitstempel noch 3 Stunden voraus von hier . Wenn ich in einem Online-Konverter umwandle, ist das Datum 21/04/2016 02:10

Also weiß jemand, was ich tun kann?

+0

Legen Sie keine Zeitzone zu Ihrem 'SimpleDateFormat' fest. – Breavyn

Antwort

0

Aus Ihrer Beschreibung nehme ich an, dass die Eingabezeichenfolge in UTC ist. Wenn diese Annahme richtig ist, empfehle ich Ihnen, "UTC" im Formatierer zu setzen. Versuchen Sie folgendes:

public static Long dateToTimestamp(String dateFormat) { 
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
    formatter.setTimeZone(TimeZone.getTimeZone("UTC")); 
    Log.e("AQM", TimeZone.getDefault().getDisplayName()); 
    try { 
     Date date = formatter.parse(dateFormat); 
     Log.e("AQM", date.toString()); 
     return date.getTime()/1000; 
    } catch (ParseException e) { 
     return Long.parseLong("0"); 
    } 
} 
+0

Das Eingabedatum ist nicht UTC, ist lokale Zeit –

Verwandte Themen