Преобразование даты и времени в соответствии со стандартом 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;

        }