[
https://issues.apache.org/jira/browse/LANG-645?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Henri Yandell updated LANG-645:
-------------------------------
Attachment: LANG-645.patch
> FastDateFormat.format() outputs incorrect week of year because locale isn't
> respected
> -------------------------------------------------------------------------------------
>
> Key: LANG-645
> URL: https://issues.apache.org/jira/browse/LANG-645
> Project: Commons Lang
> Issue Type: Bug
> Components: lang.time.*
> Affects Versions: 2.5
> Environment: Ubuntu 10.04
> Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
> Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
> Commons Lang 2.5
> Reporter: Mikael Uvebrandt
> Fix For: 3.0
>
> Attachments: LANG-645.patch
>
>
> FastDateFormat apparently doesn't respect the locale it was sent on creation
> when outputting week in year (e.g. "ww") in format(). It seems to use the
> settings of the system locale for firstDayOfWeek and minimalDaysInFirstWeek,
> which (depending on the year) may result in the incorrect week number being
> output.
> Here is a simple test program to demonstrate the problem by comparing with
> SimpleDateFormat, which gets the week number right:
> {code}
> import java.util.Calendar;
> import java.util.Date;
> import java.util.Locale;
> import java.text.SimpleDateFormat;
> import org.apache.commons.lang.time.FastDateFormat;
> public class FastDateFormatWeekBugDemo {
> public static void main(String[] args) {
> Locale.setDefault(new Locale("en", "US"));
> Locale locale = new Locale("sv", "SE");
> Calendar cal = Calendar.getInstance(); // setting locale here doesn't
> change outcome
> cal.set(2010, 0, 1, 12, 0, 0);
> Date d = cal.getTime();
> System.out.println("Target date: " + d);
> FastDateFormat fdf = FastDateFormat.getInstance("EEEE', week 'ww",
> locale);
> SimpleDateFormat sdf = new SimpleDateFormat("EEEE', week 'ww",
> locale);
> System.out.println("FastDateFormat: " + fdf.format(d)); // will
> output "FastDateFormat: fredag, week 01"
> System.out.println("SimpleDateFormat: " + sdf.format(d)); // will
> output "SimpleDateFormat: fredag, week 53"
> }
> }
> {code}
> If sv/SE is passed to Locale.setDefault() instead of en/US, both
> FastDateFormat and SimpleDateFormat output the correct week number.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.