TimeZone.getTimeZone («CST») возвращает время по Гринвичу

м перевод времени из CST в местное время, ноgetTimeZone Безразлично»Кажется, не работает должным образом.

    String cstTime = "2013-06-21 14:00:00";

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
            "yyyy-MM-dd HH:mm:ss");
    simpleDateFormat.setTimeZone(TimeZone.getTimeZone("CST"));

    Date date = null;
    try {
        date = simpleDateFormat.parse(cstTime);
    } catch (ParseException e) {
        System.out.println("Parse time error");
        e.printStackTrace();
    }

    TimeZone destTz = TimeZone.getDefault();//here I should get EDT on my phone
    simpleDateFormat.setTimeZone(destTz);
    String convertedLocalTime = simpleDateFormat.format(date);

    //the converted time I get is  "2013-06-21 10:00:00" 
    //but it should be             "2013-06-21 15:00:00" 

Кажется, что я использую GMT вместо CST, и ниже, что я получил при отладке:

String abc = TimeZone.getTimeZone("CST").toString();
System.out.println("CST:"+abc);
Output:
I/System.out(19404): CST:java.util.SimpleTimeZone[id=GMT,offset=0,dstSavings=3600000,
useDaylight=fals‌​e,startYear=0,startMode=0,startMonth=0,startDay=0,startDayOfWeek=0,
startTime=0,en‌​dMode=0,endMonth=0,endDay=0,endDayOfWeek=0,endTime=0]

Это использует GMT? почему .. Заранее спасибо!

Редактировать:

Наконец-то получил работу с помощью

simpleDateFormat.setTimeZone(TimeZone.getTimeZone( "GMT-5")); //GMT-5 is for CDT, I found my server is actually using CDT not CST

Все еще нене знаю, зачем использовать строкуCST» Можно'т работа ...

 user5592612 мар. 2015 г., 11:00
stackoverflow.com/questions/9429357/...  это должно решить вашу проблему
 Arch1tect21 июн. 2013 г., 21:30
@Nambari попробовал "Центральное стандартное время " по-прежнему получить GMT ...
 Raghunandan21 июн. 2013 г., 21:21
 kosa21 июн. 2013 г., 21:21
Дон»t использовать короткие имена для TimeZone всегда использовать длинные имена. EST может быть как по восточному поясному времени, так и по другому часовому поясу
 kosa21 июн. 2013 г., 21:41
чтобы получить EST, обычно мы используем America / New_York, посмотрите, есть ли у вас что-то подобное в базе данных Timezone.
 Matt Johnson21 июн. 2013 г., 22:03
Центральное стандартное время США обычно следует указывать какAmerica/Chicago, Дон»т пройтиGMT-5 или ты'Мы не собираемся получать правильные настройки при переходе от CST к CDT.

Ответы на вопрос(6)

Следующий код помог мне.

TimeZone tzone = TimeZone.getTimeZone("Singapore");
// set time zone to default
tzone.setDefault(tzone);

ату и время JODA, это поможет мне решить кучу проблем с датой и временем.

Вы можете инициализировать дату с часовым поясом, и конвертировать между ними очень легко

DateTimeZone zone = DateTimeZone.forID("Europe/London");

или же

DateTimeZone zoneUTC = DateTimeZone.UTC;

отAPI JODA DATE TIME

DateTime(DateTimeZone zone)
Constructs an instance set to the current system millisecond time using ISOChronology in the specified time zone.

похоже, сработало для меня, поскольку сталкивалось с похожими проблемами:

Calendar c = Calendar.getInstance(TimeZone.getTimeZone("America/Chicago"));

CST6CDT» Часовой пояс автоматически предоставит вам правильное время, когда центральное летнее время (CDT) переключится обратно на CST или наоборот.

Решение Вопроса

Returns a TimeZone corresponding to the given id, or GMT for unknown ids. 

An ID can be an Olson name of the form Area/Location, such as America/Los_Angeles. 
The getAvailableIDs() method returns the supported names. 

Попробуйте использовать getAvailableIDs?

 Planky09 июн. 2014 г., 20:16
CST находится в спискеTimeZone.getAvailableIDs() возвращается

, но это признает "GMT + 09: 00" а также "GMT + 0900" .

Ваш ответ на вопрос