Вот в этом походу и есть проблема. Ты перевел дату, а часы не перевел. Т.е. у тебя уже вроде того как должно быть зимнее время (GMT+3), а часы показывают летнее (GMT+4). Предположим что у тебя сейчас 12 часов, значит по Гринвичу сейчас 8, а в GMT+06:00 сейчас 14. В твоем же случае у тебя 12, система считает, что у тебя уже зимнее время и значит по Гринвичу сейчас 9 часов, и значит GMT+06:00 сейчас 15 часов.
Запусти и посмотри что выдаст:
Код | public static final SimpleDateFormat isoDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z (Z)");
public static void main(String[] args) throws Exception { Date now = new Date();
TimeZone defaultTimeZone = TimeZone.getDefault(); printTimeZoneInfo(defaultTimeZone); printTime(defaultTimeZone, now);
TimeZone tz = TimeZone.getTimeZone("GMT+06:00"); printTimeZoneInfo(tz); printTime(tz, now); }
private static void printTimeZoneInfo(TimeZone defaultTimeZone) { System.out.println("Name = " + defaultTimeZone.getDisplayName()); System.out.println("DST Saving = " + defaultTimeZone.getDSTSavings()); System.out.println("RawOffset = " + defaultTimeZone.getRawOffset()); System.out.println("Offset(now) = " + defaultTimeZone.getOffset(System.currentTimeMillis())); System.out.println(); }
private static void printTime(TimeZone timeZone, Date time) { isoDateFormat.setCalendar(Calendar.getInstance(timeZone)); System.out.println(isoDateFormat.format(time)); System.out.println(); }
|
|