myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo Uribe (Resolved) (JIRA)" <...@myfaces.apache.org>
Subject [jira] [Resolved] (TOMAHAWK-1608) inputDate does not accept some dates when Daylight saving time
Date Tue, 17 Apr 2012 22:40:18 GMT

     [ https://issues.apache.org/jira/browse/TOMAHAWK-1608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Leonardo Uribe resolved TOMAHAWK-1608.
--------------------------------------

       Resolution: Fixed
    Fix Version/s: 1.1.12-SNAPSHOT
         Assignee: Leonardo Uribe

I checked the code and Calendar javadocs, and the best way to do it is call first "set" and
then "clear". I added a junit test for this one. Thanks to Padovan Luca for provide this patch.
                
> inputDate does not accept some dates when Daylight saving time
> --------------------------------------------------------------
>
>                 Key: TOMAHAWK-1608
>                 URL: https://issues.apache.org/jira/browse/TOMAHAWK-1608
>             Project: MyFaces Tomahawk
>          Issue Type: Bug
>          Components: Date
>         Environment: Linux
>            Reporter: Padovan Luca
>            Assignee: Leonardo Uribe
>             Fix For: 1.1.12-SNAPSHOT
>
>
> In Italy Daylight saving time started, in past, at midnight (now 2 AM). See http://www.inrim.it/res/tf/ora_legale_i.shtml
> The inputDate component set hours, minutes, seconds and milliseconds at zero but for
example the 1979-05-27 00:00:00 didn't exist in Italy and then the component throws an exception.
> My solution, if can be useful, is edit the source code of class org.apache.myfaces.custom.date.AbstractHtmlInputDate
using Calendar.clear(field) instead Calendar.set(field, 0)
> // old 
> if( type.equals("date") ) {
> 	//Reset hour, minute, second and milisecond to type date
> 	tempCalendar.set(Calendar.HOUR_OF_DAY, 0);
> 	tempCalendar.set(Calendar.MINUTE, 0);
> 	tempCalendar.set(Calendar.SECOND, 0);
> 	tempCalendar.set(Calendar.MILLISECOND, 0);
> 	return new java.sql.Date(tempCalendar.getTimeInMillis());
> }
> // new 
> if( type.equals("date") ) {
> 	//Reset hour, minute, second and milisecond to type date
> 	tempCalendar.clear(Calendar.HOUR);
> 	tempCalendar.clear(Calendar.HOUR_OF_DAY);
> 	tempCalendar.clear(Calendar.AM_PM);
> 	tempCalendar.clear(Calendar.MINUTE);
> 	tempCalendar.clear(Calendar.SECOND);
> 	tempCalendar.clear(Calendar.MILLISECOND);
> 	return new java.sql.Date(tempCalendar.getTimeInMillis());
> }
> this solution returns the date 1979-05-27 01:00:00 but didn't throws any Exception, i
think that this is the correct behavior.
> A piece of code to test error with Italy localization is
> TimeZone.setDefault(TimeZone.getTimeZone("Europe/Rome"));
> Calendar c = Calendar.getInstance();
> c.setLenient(Boolean.FALSE);
> c.set(Calendar.YEAR, 1979);
> c.set(Calendar.MONTH, 4); // May
> c.set(Calendar.DAY_OF_MONTH, 27);
> boolean error = true;
> if (error) {
> 	c.set(Calendar.HOUR_OF_DAY, 0);
> 	c.set(Calendar.MINUTE, 0);
> 	c.set(Calendar.SECOND, 0);
> 	c.set(Calendar.MILLISECOND, 0);
> } else {
> 	c.clear(Calendar.HOUR);
> 	c.clear(Calendar.HOUR_OF_DAY);
> 	c.clear(Calendar.AM_PM);
> 	c.clear(Calendar.MINUTE);
> 	c.clear(Calendar.SECOND);
> 	c.clear(Calendar.MILLISECOND);
> }
> SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
> System.out.println(sdf.format(c.getTime()));
> The dates with error in Italy are:
> 1916 - 6 - 3
> 1917 - 4 - 1
> 1918 - 3 - 10
> 1919 - 3 - 2
> 1920 - 3 - 21
> 1940 - 6 - 15
> 1947 - 3 - 16
> 1966 - 5 - 22
> 1967 - 5 - 28
> 1968 - 5 - 26
> 1969 - 6 - 1
> 1970 - 5 - 31
> 1971 - 5 - 23
> 1972 - 5 - 28
> 1973 - 6 - 3
> 1974 - 5 - 26
> 1975 - 6 - 1
> 1976 - 5 - 30
> 1977 - 5 - 22
> 1978 - 5 - 28
> 1979 - 5 - 27

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message