Я хочу преобразовать часовой пояс из GMT в местный часовой пояс в зависимости от местоположения устройства. Я пробовал разные методы, но не получил желаемого результата. Я знаю, что в сети есть много решений, но я застрял здесь. Итак, как я могу это расставить? У меня есть формат часового пояса по Гринвичу, например: 2019-04-10T08:20:25Z
Это код, который я пробовал до сих пор:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy:MM:dd'T'HH:mm:ss'Z'");
simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
try {
Date myDate = simpleDateFormat.parse(onlyDate);
android.util.Log.v("Df", String.valueOf(myDate));
} catch (ParseException e) {
e.printStackTrace();
}
Здесь onlyDate - часовой пояс GMT
Использовать локаль:
override fun formatDate(date: Date?, dateFormat: String, locale: Locale?): String {
if (date != null) {
val localeToUse: Locale
if (locale != null) {
localeToUse = Locale.getDefault()
} else {
localeToUse = Locale.UK
}
try {
val targetFormat = SimpleDateFormat(dateFormat, localeToUse)
return targetFormat.format(date).toString()
} catch (ignore: Exception) {
// Empty
}
}
return ""
}
Джава
String formatDate(Date date, String dateFormat, Locale locale){
if (date != null) {
Locale localeToUse;
if (locale != null) {
localeToUse = Locale.getDefault();
} else {
localeToUse = Locale.UK;
}
try {
SimpleDateFormat targetFormat = new SimpleDateFormat(dateFormat, localeToUse);
return targetFormat.format(date);
} catch (Exception ignore) {
// Empty
}
}
return "";
}
как это сделать в джаве?
это сработало для меня:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
Date value = null;
try {
value = formatter.parse(onlyDate);
SimpleDateFormat dateFormatter = new SimpleDateFormat("dd-MMM-yyyy h:mm:ss a");
dateFormatter.setTimeZone(TimeZone.getDefault());
ourDate = dateFormatter.format(value);
android.util.Log.v("lh", ourDate);
} catch (ParseException e) {
e.printStackTrace();
}
В качестве отступления подумайте о том, чтобы отказаться от давно устаревших и заведомо неприятных
SimpleDateFormat
и друзей и добавить тридесятьABP в свой проект Android, чтобы использоватьjava.time
, современный API даты и времени Java. С ним намного приятнее работать.