You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin H. (JIRA)" <ji...@apache.org> on 2010/04/27 09:51:35 UTC

[jira] Commented: (WICKET-2841) DatePicker does not parse year with pattern dd.MM.yyyy correctly.

    [ https://issues.apache.org/jira/browse/WICKET-2841?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12861293#action_12861293 ] 

Martin H. commented on WICKET-2841:
-----------------------------------

I can reproduce this bug. If i specify a format with just two digit year the java side seems to sanely interpret the 2 digit year. 
But the javascript part fails to respect 4 year date formats and just returns 2 digits which then gets misinterpreted as full year in the java part and the model ends up with dates < 100 year a.d. instead of in this or the last century.
so i think a better fix would be to explicitly check for both cases.

if(datePattern.match(/yyyy/)) {
   year=""+year;
   year = "0000".slice(0,4-year.length) + year;
} else if(datePattern.match(/yy/)) year = Wicket.DateTime.padDateFragment(year % 100); 

This should work for the common cases. (i.e. formated to 2 or 4 digits, year < 10000). But if required i should be able to write code that completly handles all valid cases. Also if need to fix this bug i can supply a real patch, but it shouldn't be much additional work to change this manually with help of the location information in the patch of the original reporter.

> DatePicker does not parse year with pattern dd.MM.yyyy correctly.
> -----------------------------------------------------------------
>
>                 Key: WICKET-2841
>                 URL: https://issues.apache.org/jira/browse/WICKET-2841
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket-datetime
>            Reporter: Alf Støyle
>
> We use the date pattern dd.MM.yyyy, and when returning from the date picker (org.apache.wicket.extensions.yui.calendar.DatePicker) yields incorrect value in the date text field (org.apache.wicket.extensions.markup.html.form.DateTextField).
> For instance picking the date 19.04.2010 in the date picker, yields 19.04.10, which again becomes the java.util.Date 19.04.0010. We have found the source of the problem, and created a fix for this, but hopefully you can fix this in a later release, so we do not have to maintain a local patched version of wicket-datetime.
> I have included the patch here. However this code seems very intentional, so applying this patch may be breaking something else!?
> Thanks
> - Alf
> diff --git a/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js b/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
> index 7f19c55..420f075 100644
> --- a/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
> +++ b/src/main/java/org/apache/wicket/extensions/yui/calendar/wicket-date.js
> @@ -134,7 +134,7 @@ Wicket.DateTime.substituteDate = function(datePattern, date) {
>         // optionally do some padding to match the pattern
>         if(datePattern.match(/dd+/)) day = Wicket.DateTime.padDateFragment(day);
>         if(datePattern.match(/MM+/)) month = Wicket.DateTime.padDateFragment(month);
> -        if(datePattern.match(/yy+/)) year = Wicket.DateTime.padDateFragment(year % 100);
> +       if(datePattern.match(/yy+/)) year = Wicket.DateTime.padDateFragment(year);
>         // replace pattern with real values
>         return datePattern.replace(/d+/, day).replace(/M+/, month).replace(/y+/, year);
>  }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.