Java 如何获取指定某年 某月 某一周的 第一天 和最后一天? 本帖最后由 a7740798 于 2011-06-20 15:15:59 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c = Calendar.getInstance(); c.set(Calendar.DAY_OF_WEEK, 1);//本周第一天,以星期日开始 System.out.println(sdf.format(c.getTime())); c = Calendar.getInstance(); c.set(Calendar.DAY_OF_WEEK, 7);//本周最后一天 System.out.println(sdf.format(c.getTime())); c = Calendar.getInstance(); c.set(Calendar.DAY_OF_MONTH, 1);//本月第一天 System.out.println(sdf.format(c.getTime())); c = Calendar.getInstance(); c.add(Calendar.MONTH, 1);//本月最后一天 c.set(Calendar.DAY_OF_MONTH, 1); c.add(Calendar.DAY_OF_MONTH, -1); System.out.println(sdf.format(c.getTime())); c = Calendar.getInstance(); c.set(Calendar.DAY_OF_YEAR, 1);//本年第一天 System.out.println(sdf.format(c.getTime())); c = Calendar.getInstance(); c.set(Calendar.DAY_OF_YEAR, 1);//本年最后一天 c.set(Calendar.YEAR, 1); c.add(Calendar.DAY_OF_YEAR, -1); System.out.println(sdf.format(c.getTime())); +12011年5月第二个星期的第一天 c = Calendar.getInstance();//5月第二周的第一天 c.set(Calendar.MONTH, Calendar.MAY); c.set(Calendar.WEEK_OF_MONTH,2); c.set(Calendar.DAY_OF_WEEK,1); System.out.println(sdf.format(c.getTime()));更多请参考 JDK API import java.util.*;import java.text.*;public class Calender { public static void main(String args[]){ System.out.println(getWeekFirstday("2011","6","5")); } public static String getWeekFirstday(String year,String month,String week){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); c = Calendar.getInstance(); c.set(c.YEAR,Integer.parseInt(year));//设置年 c.set(c.MONTH, Integer.parseInt(month)-1);//设置月 c.set(c.WEEK_OF_MONTH, Integer.parseInt(week));//设置星期 c.set(Calendar.DAY_OF_WEEK, 1);//本周第一天,以星期日开始 return(sdf.format(c.getTime())); }}参考1楼代码,再看了下Api源文件,现在这个是第一天; 注意,最后一天不能只用这个:c.set(Calendar.DAY_OF_WEEK, 7);你还要再看下这个是不是到下个月去了,是的话,7-1=6,逐个判断,直到为1或者是在本月。现在思路已经很清晰了,例子也足够了。你自己再研究下,就搞定了。 c.set(c.YEAR,Integer.parseInt(year));//设置年 c.set(c.MONTH, Integer.parseInt(month)-1);//设置月 c.set(c.WEEK_OF_MONTH, Integer.parseInt(week));//设置星期这三行的c.最好是改成:c.set(Calendar.YEAR,Integer.parseInt(year));//设置年c.set(Calendar.MONTH, Integer.parseInt(month)-1);//设置月c.set(Calendar.WEEK_OF_MONTH, Integer.parseInt(week));//设置星期 public static String getFirstDate(int year,int month,int week) { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month-1); c.set(Calendar.WEEK_OF_MONTH, week); String day2=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime()); System.out.print(day2); return day2; } 水仙花数问题!!! jfreeChart 序列化问题怎么解决? 一个简单的聊天代码问题? Activex控件在框架leftFrame,如何在ringhFrame里面访问leftFrame的控件? 急求帮助 关于static method的错误 类型转换 File read/write 如何在applet中使用tree控件? 数据库连接 谁能告诉我java读取记事本的格式如何的 List l=new ArrayList()和Arraylist l=new ArrayList()有什么不同啊?
Calendar c = Calendar.getInstance();
c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, 1);//本周第一天,以星期日开始
System.out.println(sdf.format(c.getTime()));
c = Calendar.getInstance();
c.set(Calendar.DAY_OF_WEEK, 7);//本周最后一天
System.out.println(sdf.format(c.getTime()));
c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 1);//本月第一天
System.out.println(sdf.format(c.getTime()));
c = Calendar.getInstance();
c.add(Calendar.MONTH, 1);//本月最后一天
c.set(Calendar.DAY_OF_MONTH, 1);
c.add(Calendar.DAY_OF_MONTH, -1);
System.out.println(sdf.format(c.getTime())); c = Calendar.getInstance();
c.set(Calendar.DAY_OF_YEAR, 1);//本年第一天
System.out.println(sdf.format(c.getTime()));
c = Calendar.getInstance();
c.set(Calendar.DAY_OF_YEAR, 1);//本年最后一天
c.set(Calendar.YEAR, 1);
c.add(Calendar.DAY_OF_YEAR, -1);
System.out.println(sdf.format(c.getTime()));
+1
2011年5月第二个星期的第一天 c = Calendar.getInstance();//5月第二周的第一天
c.set(Calendar.MONTH, Calendar.MAY);
c.set(Calendar.WEEK_OF_MONTH,2);
c.set(Calendar.DAY_OF_WEEK,1);
System.out.println(sdf.format(c.getTime()));更多请参考 JDK API
import java.text.*;
public class Calender {
public static void main(String args[]){
System.out.println(getWeekFirstday("2011","6","5"));
}
public static String getWeekFirstday(String year,String month,String week){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c = Calendar.getInstance();
c.set(c.YEAR,Integer.parseInt(year));//设置年
c.set(c.MONTH, Integer.parseInt(month)-1);//设置月
c.set(c.WEEK_OF_MONTH, Integer.parseInt(week));//设置星期
c.set(Calendar.DAY_OF_WEEK, 1);//本周第一天,以星期日开始
return(sdf.format(c.getTime()));
}}
参考1楼代码,再看了下Api源文件,现在这个是第一天;
你还要再看下这个是不是到下个月去了,是的话,7-1=6,逐个判断,直到为1或者是在本月。
现在思路已经很清晰了,例子也足够了。你自己再研究下,就搞定了。
c.set(c.YEAR,Integer.parseInt(year));//设置年
c.set(c.MONTH, Integer.parseInt(month)-1);//设置月
c.set(c.WEEK_OF_MONTH, Integer.parseInt(week));//设置星期
这三行的c.最好是改成:
c.set(Calendar.YEAR,Integer.parseInt(year));//设置年
c.set(Calendar.MONTH, Integer.parseInt(month)-1);//设置月
c.set(Calendar.WEEK_OF_MONTH, Integer.parseInt(week));//设置星期
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month-1);
c.set(Calendar.WEEK_OF_MONTH, week);
String day2=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
System.out.print(day2);
return day2;
}