Вы пробовали?
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID());
Результат будет, если устройство оказывается в Австралии
TimeZone GMT + 09: 30 Timezon ID :: Австралия/Дарвин
Это должно вернуть UTC в виде строки и дата объекта. Вы можете изменить формат даты.
static final String DATEFORMAT = "yyyy-MM-dd HH:mm:ss"
public static Date getUTCdatetimeAsDate()
{
//note: doesn't check for null
return stringDateToDate(GetUTCdatetimeAsString());
}
public static String getUTCdatetimeAsString()
{
final SimpleDateFormat sdf = new SimpleDateFormat(DATEFORMAT);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
final String utcTime = sdf.format(new Date());
return utcTime;
}
public static Date stringDateToDate(String StrDate)
{
Date dateToReturn = null;
SimpleDateFormat dateFormat = new SimpleDateFormat(DATEFORMAT);
try
{
dateToReturn = (Date)dateFormat.parse(StrDate);
}
catch (ParseException e)
{
e.printStackTrace();
}
return dateToReturn;
}
да, он возвращает объект, имеющий строковый формат, который не работает для меня, и он также имеет время UTC. Существует несколько схожий формат, например «Восточноевропейское стандартное время», но в таблице, включенной в мой вопрос, ее назвали «Европейское стандартное время» –
Кроме того, между UTC и GMT нет разницы. Первый пример кода дает вам GMT, равный тому же, что и UTC. –
Второй образец кода имеет метод, который вернет вам UTC в виде строки. –