2016-04-20 12 views
0

私は日付からタイムスタンプを取得しようとしています。しかし、私はローカルタイムスタンプを取得しようとしていますが、イベントはタイムゾーンを設定して、私はまだUTCでタイムスタンプを取得しています。ローカルタイムスタンプを取得できないAndroid

これは私のコードです:

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"); 
     } 
    } 

これはログです:

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 

日付とタイムゾーンがOKで、タイムゾーンがBrasilia Standard Timeが、それでも3時間進んここからタイムスタンプ。オンラインコンバータで変換すると、日付は21/04/2016 02:10

だから、誰かが私ができることを知っていますか?

+0

あなたの 'SimpleDateFormat'にタイムゾーンを設定しないでください。 – Breavyn

答えて

0

あなたの説明から、私は入力文字列がUTCであると仮定しています。その前提が正しい場合は、フォーマッタで「UTC」を設定することをお勧めします。以下を試してください

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

入力された日付はUTCではなく、ローカルタイム –

関連する問題