Конвертировать данное время в GMT - PullRequest
1 голос
/ 19 июля 2011

Я пытался преобразовать данную дату Mon Jul 04 00:00:00 IST 2011 в GMT следующим образом: 2011-07-04 18:10:47 GMT+00:00 2011, но она отображает 3/7/11 6:30 PM

Это мой код:

java.text.SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

java.text.SimpleDateFormat res_format = new SimpleDateFormat("dd/mm/yyyy HH:mm");

java.util.Date date1 = format.parse("2011-07-04 00:00:00");

DateFormat gmtFormat = new SimpleDateFormat();

TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");

gmtFormat.setTimeZone(gmtTime);

System.out.println("Current Time: "+date1);

System.out.println("Time:"+gmtFormat.format(date1));

Ответы [ 3 ]

2 голосов
/ 19 июля 2011

Это работает для меня:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

public class TZ {

    public static void main(String[] args) throws ParseException {
    java.text.SimpleDateFormat sourceFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss ZZZ yyyy");

    java.text.SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss zzzz");

    java.util.Date date1 = sourceFormat.parse("Mon Jul 04 00:00:00 IST 2011");

    TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");

    gmtFormat.setTimeZone(gmtTime);

    System.out.println("Source date: " + date1);

    System.out.println("gmt:" + gmtFormat.format(date1));

    }
}
0 голосов
/ 19 июля 2011

Ваша идея верна. Если бы вы удосужились заглянуть в код еще раз, вы бы знали, что сделали неправильно.

Ваш код работает нормально. Но вы не видите, чего хотите, потому что вы (скорее всего) инициализировали

java.text.SimpleDateFormat res_format = new SimpleDateFormat("dd/mm/yyyy HH:mm");

для вывода

, и вы используете совершенно новый SimpleDateFormat, совершенно неожиданно для установки часового пояса и отображения.

Если вы измените

DateFormat gmtFormat = new SimpleDateFormat();

до

java.text.SimpleDateFormat gmtFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm zz");

Вы получаете то, что хотите.

(Обратите внимание также на изменение формата. Это dd/MM/yyyy, а не dd/mm/yyyy)

Ваш код был бы намного легче читать (для вас и других), если бы вы логически сгруппировали блоки и не использовали полностью квалифицированные имена для (почти) всех классов

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = format.parse("2011-07-04 00:00:00");

    SimpleDateFormat gmtFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm zz");
    TimeZone gmtTime = TimeZone.getTimeZone("GMT+00");
    gmtFormat.setTimeZone(gmtTime);

    System.out.println("Current Time: " + date);

    System.out.println("Time:" + gmtFormat.format(date));
0 голосов
/ 19 июля 2011

Быстрое решение с минимальным изменением в вашем коде - заменить:

DateFormat gmtFormat = new SimpleDateFormat();

На:

SimpleDateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
...