日期:2014-05-20  浏览次数:20792 次

Java星期几和日期的计算
想实现这样的需求

以2012年12月18日为起点,取出以后三个月中 周一,周三,周五的日期,希望大家给点思路,以前未实现过类似需求




------解决方案--------------------
看你用不用java自有的类库。
如果不用的话,就得自己写日历
周一周三周五都是有规律的,每个周都是一样。所以难点不在周几,而在日期。也就是说你要知道2012.12.18之后三个月的每天的日期和12.18是星期几就行了。

个人见解,仅供参考。
------解决方案--------------------
参考 joda-time 的 DateTime类。
------解决方案--------------------
引用:
请教楼上,其他开源的类库去解决此类问题吗?引用:也就是说你要知道2012.12.18之后三个月的每天的日期和12.18是星期几就行了。如果我选择一周中不定的几天呢?

你想用类库的话可以查查java中有关Calendar的类库,比如java.util.GregorianCalendar
最笨的方法就是遍历每天,得到每天是周几。
------解决方案--------------------
获取到今天的日历字段值(周),获取到你想获取的日期的日历字段值(周),这样你就能得要今天与你想要的日期相差几天,不就获取到了12.18之后的第一个周一、周三、周五的日期了么。然后都+7就OK了
------解决方案--------------------
要java.util.Calendar就能搞定的吧!
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
 * 以2012年12月18日为起点,
 * 取出以后三个月中 周一,周三,周五的日期,
 *
 */
public class Test
{
public static void main(String[] args)
{
Calendar cal = Calendar.getInstance();

cal.set(Calendar.YEAR, 2012);
cal.set(Calendar.MONTH, Calendar.DECEMBER);
cal.set(Calendar.DAY_OF_MONTH, 18);

Calendar c = (Calendar) cal.clone();
c.add(Calendar.MONTH, 3);

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

while(!c.before(cal))
{
int day = cal.get(Calendar.DAY_OF_WEEK) ;
if(day == Calendar.MONDAY 
------解决方案--------------------
 day == Calendar.WEDNESDAY 
------解决方案--------------------
 day == Calendar.FRIDAY)
System.out.println(df.format(cal.getTime()));
cal.add(Calendar.DATE, 1);
}
}
}