Используемый мной сервер находится в Мельбурне, Австралия. У меня есть отчеты из Перта, Австралия, что указанная дата уменьшается на один день (т. Е. 2003-10-31 отображается как 2003-10-30). В моих чтениях я обнаружил, что мне нужно установить часовой пояс. Говорят, не используйте часовой пояс с двумя/тремя буквами, используя полный часовой пояс. Тем не менее, я не могу найти полный часовой пояс для Мельбурна, Австралия. Может ли кто-нибудь помочь с этим, пожалуйста?GWT - Показанная дата уменьшается на один день
кода я придумал это:
//Display the DOB
DateTimeFormat fmt = DateTimeFormat.getFormat("yyyy-MM-dd australiaMelbourne");
String stringDOB = fmt.format(ythMmbrSectDtls.getDob());
Label dateLblDOB = new Label(stringDOB);
dateLblDOB.setStyleName("gwt-Label-Login");
dateLblDOB.setWidth("100px");
flexTable.setWidget(row, 3, dateLblDOB);
Код должен быть (на стороне сервера):
while (result.next()) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(result.getDate("dob"));
TimeZone timeZone = TimeZone.getDefault();
calendar.setTimeZone(timeZone);
java.sql.Date javaSqlDateDOB = new java.sql.Date(calendar.getTime().getTime());
VenturerSectDtls venturerSectDtls = new VenturerSectDtls(
result.getString("cdID"),
null,
result.getString("surname"),
result.getString("firstName"),
javaSqlDateDOB,
//result.getDate("dob"),
Привет Akunosh, добавили код, который я думаю, что я должен использовать. Не могли бы вы проверить это. Я думаю, вместо того, чтобы установить часовой пояс для Австралии/Мельбурна, я должен использовать TimeZone timeZone = TimeZone.getDefault(); для получения часового пояса сервера (это то, что вы подразумеваете, в вашем примере, «система (компьютер), на которой работает эта программа«? »). Таким образом, если программа перемещается на другой сервер, мне не нужно менять код. Я не могу воспроизвести это на своем тестовом ПК, и я не хочу вводить вопросы в производство. Таким образом, проверка стола будет оценена по достоинству. – Glyn
Я сделал больше исследований, и я считаю, что это должно быть сделано на стороне сервера, а не на стороне клиента. Это верно? Это будет лучше для меня, так как фиксация даты до того, как я передам ее на сторону клиента, будет означать меньше изменений. Это означает, что мне нужно задать новый вопрос, поскольку я не могу понять, как это сделать на стороне сервера. – Glyn
'TimeZone timeZone = TimeZone.getDefault();' устанавливает часовой пояс по умолчанию для операционной системы, в которой работает этот код/jvm. Если у вас есть это в своем клиентском программном обеспечении, он установит часовой пояс для часового компьютера клиента. Вопрос в том, что вы хотите делать с отображаемым временем. Если это связано с данными на сервере, такими как записи в форуме или журнал изменений или что-то в этом роде, то вы должны использовать время серверов и отправлять их клиенту, каждый пользователь получает одну и ту же ссылку. – Akunosh