2016-06-06 2 views
0

Используемый мной сервер находится в Мельбурне, Австралия. У меня есть отчеты из Перта, Австралия, что указанная дата уменьшается на один день (т. Е. 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"), 

ответ

1

полный формат часового пояса Continent/City так что в вашем случае Australia/Melbourne ,

Для получения дополнительной информации см: http://tutorials.jenkov.com/java-date-time/java-util-timezone.html

+0

Привет Akunosh, добавили код, который я думаю, что я должен использовать. Не могли бы вы проверить это. Я думаю, вместо того, чтобы установить часовой пояс для Австралии/Мельбурна, я должен использовать TimeZone timeZone = TimeZone.getDefault(); для получения часового пояса сервера (это то, что вы подразумеваете, в вашем примере, «система (компьютер), на которой работает эта программа«? »). Таким образом, если программа перемещается на другой сервер, мне не нужно менять код. Я не могу воспроизвести это на своем тестовом ПК, и я не хочу вводить вопросы в производство. Таким образом, проверка стола будет оценена по достоинству. – Glyn

+0

Я сделал больше исследований, и я считаю, что это должно быть сделано на стороне сервера, а не на стороне клиента. Это верно? Это будет лучше для меня, так как фиксация даты до того, как я передам ее на сторону клиента, будет означать меньше изменений. Это означает, что мне нужно задать новый вопрос, поскольку я не могу понять, как это сделать на стороне сервера. – Glyn

+0

'TimeZone timeZone = TimeZone.getDefault();' устанавливает часовой пояс по умолчанию для операционной системы, в которой работает этот код/​​jvm. Если у вас есть это в своем клиентском программном обеспечении, он установит часовой пояс для часового компьютера клиента. Вопрос в том, что вы хотите делать с отображаемым временем. Если это связано с данными на сервере, такими как записи в форуме или журнал изменений или что-то в этом роде, то вы должны использовать время серверов и отправлять их клиенту, каждый пользователь получает одну и ту же ссылку. – Akunosh

0

Используйте SimpleDateFormat вместо DateTimeFormat

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);

Пожалуйста, проверьте документацию для SimpleDateFormat здесь

Java 6: http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

Java 7: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

+1

Вы не можете использовать 'SimpleDateFormat' на стороне клиента GWT. Это не часть [JRE Emulation] (http://www.gwtproject.org/doc/latest/RefJreEmulation.html). – Baz