Hi...
I have a problem of using method add() in java.util.Calendar, it returns wrong value in some specific date.
here is my codes, it will return a string of year plus week when I move the date by week:
import java.util.*;
import java.text.SimpleDateFormat;
public class WorkTimeArranger
{
public static String getWorkNoString(int weekToMove)
{
Calendar cal = new GregorianCalendar(TimeZone.getDefault());
cal.add(Calendar.WEEK_OF_YEAR,weekToMove);
String year = String.valueOf(cal.get(Calendar.YEAR));
String week = String.valueOf(cal.get(Calendar.WEEK_OF_YEAR));
.length() == 1 ? "0" + weektmp : weektmp);
return year + weekNo;
}
public static void main(String[] args)
{
WorkTimeArranger wa = new WorkTimeArranger();
System.out.println("pre week:" + WorkTimeArranger.getWorkNoString(-1));
System.out.println("this week:" + WorkTimeArranger.getWorkNoString(0));
System.out.println("next week:" + WorkTimeArranger.getWorkNoString(1));
}
}
but if you adjust your date to 2001/12/31 or the last few days of the year, and run this , it will show:
preweek:200152
thisweek:20011
nextweek:20022
why does it return 20011 instead of 20021 or 200153 to 'thisweek' ?
I have a problem of using method add() in java.util.Calendar, it returns wrong value in some specific date.
here is my codes, it will return a string of year plus week when I move the date by week:
import java.util.*;
import java.text.SimpleDateFormat;
public class WorkTimeArranger
{
public static String getWorkNoString(int weekToMove)
{
Calendar cal = new GregorianCalendar(TimeZone.getDefault());
cal.add(Calendar.WEEK_OF_YEAR,weekToMove);
String year = String.valueOf(cal.get(Calendar.YEAR));
String week = String.valueOf(cal.get(Calendar.WEEK_OF_YEAR));
.length() == 1 ? "0" + weektmp : weektmp);
return year + weekNo;
}
public static void main(String[] args)
{
WorkTimeArranger wa = new WorkTimeArranger();
System.out.println("pre week:" + WorkTimeArranger.getWorkNoString(-1));
System.out.println("this week:" + WorkTimeArranger.getWorkNoString(0));
System.out.println("next week:" + WorkTimeArranger.getWorkNoString(1));
}
}
but if you adjust your date to 2001/12/31 or the last few days of the year, and run this , it will show:
preweek:200152
thisweek:20011
nextweek:20022
why does it return 20011 instead of 20021 or 200153 to 'thisweek' ?