Я должен получить день, месяц, детали года от a Date
значение, но getYear()
удерживается от использования, дает год на 2 цифрах и имеет проблемы с двухтысячным годом (2008 дает 108). Документ Java рекомендует использовать java.util.calendar
но это не поддерживается в GWT.
Я не хочу отправлять всю информацию назад и вперед между сервером и клиентом только для контакта с датами.
Править: функции обработки Даты, должен быть реализован в GWT futur версии: http://code.google.com/p/google-web-toolkit/issues/detail?id=603Calendar
могли бы быть поддерживаемые
Не используйте эти устаревшие методы в классе Date в GWT.
Если вы не хотите использовать сторонние реализации Date для GWT, используйте комбинацию DateTimeFormat
вместе со строками в качестве временного решения, пока GWT не предложит лучшую поддержку для манипулирования датами.
For date -
DateTimeFormat.getFormat( "d-M-yyyy" ).format( new Date() ).split( "-")[0]
For month -
DateTimeFormat.getFormat( "d-M-yyyy" ).format( new Date() ).split( "-")[1]
For year -
DateTimeFormat.getFormat( "d-M-yyyy" ).format( new Date() ).split( "-")[2]
Править- Точно так же избегайте использования новой даты (гг, мм, дд), возникли несоответствия в зависимости от браузера и диапазона дат.
Я использую простой класс DateUtil для создания и анализа объектов Date в GWT, может быть, он вам пригодится -
(Предупреждение: очень грубо, работа в процессе)
public class DateUtil
{
private static final String D_M_YYYY = "d-M-yyyy";
private static final String DATE_SEPARATOR = "-";
public static Date getDate( Integer dd, Integer mm, Integer yyyy )
{
if ( dd == null || mm == null || yyyy == null )
return null;
Date retVal = null;
try
{
retVal = DateTimeFormat.getFormat( D_M_YYYY ).parse( dd + DATE_SEPARATOR + mm + DATE_SEPARATOR + yyyy );
}
catch ( Exception e )
{
retVal = null;
}
return retVal;
}
public static String getDayAsString( Date date )
{
return ( date == null ) ? null : DateTimeFormat.getFormat( D_M_YYYY ).format( date ).split( DATE_SEPARATOR )[0];
}
public static String getMonthAsString( Date date )
{
return ( date == null ) ? null : DateTimeFormat.getFormat( D_M_YYYY ).format( date ).split( DATE_SEPARATOR )[1];
}
public static String getYearAsString( Date date )
{
return ( date == null ) ? null : DateTimeFormat.getFormat( D_M_YYYY ).format( date ).split( DATE_SEPARATOR )[2];
}
public static boolean isValidDate( Integer dd, Integer mm, Integer yyyy )
{
boolean isvalidDate = true;
try
{
String transformedInput = DateTimeFormat.getFormat( D_M_YYYY ).format( getDate( dd, mm, yyyy ) );
String originalInput = dd + DATE_SEPARATOR + mm + DATE_SEPARATOR + yyyy;
isvalidDate = transformedInput.equals( originalInput );
}
catch ( Exception e )
{
isvalidDate = false;
}
return isvalidDate;
}
}
Я не думаю, что gwt будет поддерживать Calendar в будущем, возможно, он сможет поддерживать другую реализацию манипулирования датой. Итак, поскольку рекомендация Java об отказе от использования Date недействительна в Gwt, и у вас нет другого варианта без импорта сторонней библиотеки, правильным способом является использование Date и игнорирование предупреждений об устаревании.
Вы можете просто добавить 1900 к getYear()
возвращаемому значению