United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-4862638 SpinnerDateModel doesn't roll the year field when adding weeks in the editor
JDK-4862638 : SpinnerDateModel doesn't roll the year field when adding weeks in the editor

Details
Type:
Bug
Submit Date:
2003-05-12
Status:
Closed
Updated Date:
2003-12-02
Project Name:
JDK
Resolved Date:
2003-12-02
Component:
core-libs
OS:
windows_2000
Sub-Component:
java.text
CPU:
x86
Priority:
P4
Resolution:
Not an Issue
Affected Versions:
1.4.1,1.4.2
Fixed Versions:

Related Reports
Relates:

Sub Tasks

Description

Name: jk109818			Date: 05/12/2003


FULL PRODUCT VERSION :
java version "1.4.1_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_02-b06)
Java HotSpot(TM) Client VM (build 1.4.1_02-b06, mixed mode)

FULL OS VERSION :
Microsoft Windows 2000 [Versi??n 5.00.2195]

A DESCRIPTION OF THE PROBLEM :
When I add a week in the JSpinner component and the week value is the last week of month in the calendar, the year field doesn??t roll to the next year. Sorry about my english ;) I speak spanish.
Best regards,
Maximiliano Palacios


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Calendar;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;

public class MyJSpinner {

	public static void main(String[] args) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		JFrame frame = new JFrame("JSpinnerDemoBug");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JLabel emptyLabel = new JLabel("");
		emptyLabel.setPreferredSize(new Dimension(300, 120));
		frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);
		SpinnerDateModel sdm = new SpinnerDateModel(new Date(), null, null, Calendar.MONTH);
		JSpinner js = new JSpinner(sdm);
		js.setEditor(new JSpinner.DateEditor(js, "w MM/yyyy"));
		frame.getContentPane().add(js);
		frame.pack();
		frame.setVisible(true);
	}
}
---------- END SOURCE ----------
(Review ID: 185641) 
======================================================================

                                    

Comments
EVALUATION



Name: apR10133			Date: 05/14/2003


The problem is that java.text.SimpleDateFormatter incorrectly parse
the date "1 12/2003" of format "w MM/yyyy" to the Dec 29,2002. The
test case to show the bug in SimpleDateFormatter is listed below:

--------------------- test.java ------------------------
import java.text.*;
import java.util.*;

public class test {

     public static void main(String[] args) {
	SimpleDateFormat format = new SimpleDateFormat("w MM/yyyy");
	Date date = format.parse("1 12/2003", new ParsePosition(0));
	System.out.println("Date 1 12/2003 (w MM/yyyy) is parsed to "+date);
     }
}
---------------------------------------------------------

###@###.###


======================================================================


The 1st week in 2003 is from 2002-12-29 to 2003-1-4. Because no day of week is specified, it uses the first day of week (Sunday for the US locale) as the day of week. So it picks up 2002-12-29 (Sunday). Note that "12" (month) is not used to determine the date. See the Calendar class description. Also note that GregorianCalendar doesn't support week-based year numbering, which is required to designate a date in the ISO 8601-style year, week of year, day of week combination. See 4267450.
###@###.### 2003-12-02
                                     
2003-12-02



Hardware and Software, Engineered to Work Together