2017-01-03 9 views
0

Я использую этот код Android для преобразования миллисекунд в формат mm: ss.SS, но в результате dateformat добавляет 30 дополнительных минут в дату.Dateformat добавляет дополнительные 30 минут к времени

 Date date = new Date(millis); 
     DateFormat dateFormat= new SimpleDateFormat("mm:ss.SS", Locale.US); 
     best.add(dateFormat.format(date));\ 

На самом деле, я хочу преобразовать миллисекунды в формат m: ss.SS. Есть ли другой лучший способ достичь этого?

Заранее спасибо.

+0

Существует проблема с часовым поясом, который вы используете. Как вы рассчитываете, иллюстрируете пример? –

+0

Я не использую какой-либо часовой пояс –

+0

Конечно, вы используете часовой пояс, здесь неявно ваш системный часовой пояс скрыт в классе 'SimpleDateFormat' (я считаю неявные настройки злыми). Что означает 'TimeZone.getDefault()' print? И, пожалуйста, также напечатайте переменную 'millis', чтобы мы могли помочь с дальнейшим анализом. Еще одна проблема, которую я вижу, это использование только двух символов SS. Вы должны использовать SSS для миллисекунд. –

ответ

0

для установки TImezone:

dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); 

Мой Guess ... если вы живете в + 30 минут часовой пояс GMT и, если не указано другое одно, ваш форматировщик подберет ваш текущий, так он считает, 0 часов, как по Гринвичу и вы находитесь в GMT + 30 мин, она выводит + 30 минут ...

Чтобы получить часовой пояс из пользовательского текущего места вы можете использовать:

TimeZone tz = TimeZone.getDefault(); 
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID()); 

в n вы можете установить часовой пояс в формате даты.

он возвратит вас часовой пояс, как «IST»

Также вы можете попробовать следующий код, чтобы найти GMT смещение часового пояса:

public String getCurrentTimezoneOffset() { 

    TimeZone tz = TimeZone.getDefault(); 
    Calendar cal = GregorianCalendar.getInstance(tz); 
    int offsetInMillis = tz.getOffset(cal.getTimeInMillis()); 

    String offset = String.format("%02d:%02d", Math.abs(offsetInMillis/3600000), Math.abs((offsetInMillis/60000) % 60)); 
    offset = "GMT"+(offsetInMillis >= 0 ? "+" : "-") + offset; 

    return offset; 
} 

он возвращает часовой пояс, как: GMT + 5:30 этот формат

С помощью часового пояса вы можете найти точное время во всех устройствах ..

см. Это также: https://developer.android.com/reference/java/util/TimeZone.html

+0

Я не хочу добавлять 30 мин. Dateformat добавляет его в формат даты. Я не знаю, почему ... –

+0

@akshaybhange ..check your timezone .. – rafsanahmad007

+0

Да, я живу в часовом поясе GMT ​​+ 5: 30 мин, поэтому это изменит человека на человека .. что мне нужно сохранить для него? все устройства? –