我有以下 java 代码来获取特定工作日的日期:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.YEAR, 2010);
cal.set(Calendar.WEEK_OF_YEAR, 37); //week 37 of year 2010
cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
System.out.println("date="+sdf.format(cal.getTime()));
当我将此代码放入main(String[] args)
方法,如下所示:
import java.util.*;
import java.lang.*;
import java.text.SimpleDateFormat;
public class test{
public static void main(String[] args){
/** get dates from a known week ID **/
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.YEAR, 2010);
cal.set(Calendar.WEEK_OF_YEAR, 37);
cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
System.out.println("date="+sdf.format(cal.getTime()));
}
}
并运行它,我得到了正确的结果,即date=09/09/2010
。没有问题。
然而...
当我将此代码放入类的函数中时,如下所示:
Public Class MyService{
MyService(){}
...
...
public String getDateOfWeekDay(int weekId, int year, int weekDay){
//weekId = 37; year=2010; weekDay = Calendar.THURSDAY
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.set(Calendar.YEAR, year);
cal.set(Calendar.WEEK_OF_YEAR, weekId);
cal.set(Calendar.DAY_OF_WEEK, weekDay);
//I am developing android app. so I use Log to printout
logPrinter.println("date="+sdf.format(cal.getTime()));
return sdf.format(cal.getTime());
}
}
在另一个类MainClass中,MainClass将调用此服务函数,如下所示:
Public Class MainClass{
MyService myService = new MyService();
myService.getDateOfWeekDay(37,2010,Calendar.THURSDAY);
}
但返回的结果始终是日期本周的星期四(日期=14/10/2010),而不是我指定的那周的星期四(2010 年第 37 周,星期四)。
为什么????我使用完全相同的java代码来获取特定星期几的日期,只是使用方式不同,为什么结果不同???我无法理解这个...有人可以向我解释吗?