Преобразование даты и времени в соответствии со стандартом UTC
У меня есть строка даты 2012-11-21 13:11:25
, которую я получаю из локальной базы данных. Мне нужно преобразовать его в соответствии с настройками UTC
и отобразить его на определенном экране. Поэтому, если его GMT+05:30
он должен отображаться как 2012-11-21 18:41:25
на экране. Как я могу сделать это преобразование. Я проверил некоторые вопросы, но это не сработало.
Я могу получить объект Date, который возвращает что-то вроде Wed Nov 21 13:11:25 GMT+05:30 2012
, после этого мне нужно получить время как 18:41:25
и date как 11-21-2012
Заранее спасибо
Ответы
Ответ 1
Ваши df
и inputFmt
должны использовать тот же формат.
Но я думаю, вы должны сделать это вот так:
Date myDate = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
calendar.setTime(myDate);
Date time = calendar.getTime();
SimpleDateFormat outputFmt = new SimpleDateFormat("MMM dd, yyy h:mm a zz");
String dateAsString = outputFmt.format(time);
System.out.println(dateAsString);
Ответ 2
Получить UTC с текущего времени:
public String getCurrentUTC(){
Date time = Calendar.getInstance().getTime();
SimpleDateFormat outputFmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
outputFmt.setTimeZone(TimeZone.getTimeZone("UTC"));
return outputFmt.format(time);
}
Ответ 3
Лучший способ получить форматированную строку Date в требуемом формате -
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.US);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
String formatted = dateFormat.format(date);
Ответ 4
//This is my input date
String dtStart = "2019-04-24 01:22 PM";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm a");
Date date = null;
try {
date = format.parse(dtStart);
getDateInUTC(date)
} catch (ParseException e) {
e.printStackTrace();
}
//Этот метод используется для преобразования даты в некоторый формат UTC
public static String getDateInUTC(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
String dateAsString = sdf.format(date);
System.out.println("UTC" + dateAsString);
return dateAsString;
}