Я некоторое время копался в вопросе в StackOverflow
Android получить Текущее время UTC
а также
Как узнать текущую дату и время в формате UTC или GMT на Java?
Я попробовал два способа узнать текущее время моего телефона в GMT. Я нахожусь в Испании, а разница GMT + 2. Итак, давайте посмотрим на примере:
1º попытка: я создал формат и применил его к System.currentTimeMillis ();
DateFormat dfgmt = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
dfgmt.setTimeZone(TimeZone.getTimeZone("GMT"));
String gmtTime = dfgmt.format(new Date());
//Using System.currentTimeMillis() is the same as new Date()
Date dPhoneTime = dfgmt.parse(gmtTime);
Long phoneTimeUTC = dPhoneTime.getTime();
Мне нужно вычесть это время в другое время, поэтому я делаю приведение к Лонгу.
DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date arrivalDate = df.parse(item.getArrivalDate());
//the String comes from JSON and is for example:"UTC_arrival":"2011-05-16 18:00:00"
//which already is in UTC format. So the DateFormat doesnt have the GMT paramater as dfgmt
diff = arrival.getTime() - phoneTimeUTC ;
Я тоже пробовал это:
Calendar aGMTCalendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
Long phoneTimeUTC = aGMTCalendar.getTimeInMillis()
И все же я не понимаю правильную разницу. Но если я сделаю это:
Long phoneTimeUTC = aGMTCalendar.getTimeInMillis()-3600000*2;
Работает нормально.
Есть идеи?
Большое спасибо,
Давид.