2015-08-03 2 views
1

Я использую этот код, чтобы получить метку времени в моем приложении, сохраняя это на своем сервере.Время UTC для часовой пояс в зависимости от страны

final SimpleDateFormat dateFormatGmt = new SimpleDateFormat("HH:mm:ss dd-MMM-yyyy"); 
timeenter = dateFormatGmt.format(new Date()); 
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("utc")); 

, когда пользователь просмотреть сводный отчет о приложении, на стороне пользователя сохраненное время UTC должны быть преобразованы в их часовой пояс в зависимости от их расположения.

является любой простой способ, чтобы получить смещение времени от андроида их расположения, как http://www.java2s.com/Code/Android/Date-Type/TimestamptoUTC.htm

+1

Это называется часовой пояс, а не GMT. GMT - это один конкретный часовой пояс (время по Гринвичу Меридиан). Временная метка Java не зависит от часовой пояс (это всегда UTC), поэтому вам не нужно все это делать. Я предлагаю вам всегда хранить время в UTC, а затем применять любую модификацию часового пояса. Android автоматически преобразует его в текущий часовой пояс при создании 'Date' с ним. Также обратите внимание, что одна страна может иметь несколько часовых поясов. – m0skit0

ответ

0

Это называется часовой пояс, а не по Гринвичу. GMT - это один конкретный часовой пояс (среднее время по Гринвичу).

Date is timezone-agnostic (он не хранит часовой пояс). Вам нужно указать часовой пояс в форматировании. Например:

final Date curDate = new Date(); 
final String format = "HH:mm:ss dd-MMM-yyyy"; 

final SimpleDateFormat dateFormatGmt = new SimpleDateFormat(format); 
dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT")); 
System.out.println(dateFormatGmt.format(curDate)); 

final SimpleDateFormat dateFormatHK = new SimpleDateFormat(format); 
dateFormatHK.setTimeZone(TimeZone.getTimeZone("PNT")); 
System.out.println(dateFormatHK.format(curDate));