Calendar日期的计算

一,得到三月内的周六,周日

  Calendar calendar=Calendar.getInstance();//当前日期
		  Calendar calendar2=Calendar.getInstance();
		  int curYear = calendar2.get(Calendar.YEAR); // 得到系统年份
		  int curMonth = calendar2.get(Calendar.MONTH); // 得到系统月份
		  int curDay=calendar2.get(Calendar.DAY_OF_MONTH);
		  Calendar nowyear=Calendar.getInstance();
		  nowyear.set(curYear,curMonth, curDay);//将开始日期设置为当天,如7月17日
		  Calendar nexty=Calendar.getInstance();
		  calendar2.add(Calendar.MONTH,4);
		  nexty.set(calendar2.get(Calendar.YEAR),calendar2.get(Calendar.MONTH), 1);//将结束时间设置为三个月后的第一天,如10月1日
		  calendar.add(Calendar.DAY_OF_MONTH, -calendar.get(Calendar.DAY_OF_WEEK));//周六

		 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		 /** 初始化周六的日期*/
		 calendar.add(Calendar.DAY_OF_MONTH, -calendar.get(Calendar.DAY_OF_WEEK));//周六
		 Calendar SaturdayC=(Calendar) calendar.clone();

		 for(;SaturdayC.before(nexty);SaturdayC.add(Calendar.DAY_OF_YEAR,7)){

			 if(SaturdayC.after(nowyear)){
				 Date date = sdf.parse(SaturdayC.get(Calendar.YEAR)+"-"+(1+SaturdayC.get(Calendar.MONTH))+"-"+SaturdayC.get(Calendar.DATE));
				 String time=sdf.format(date);
				 SaturdayList.add(time);
			 }

		 }
		 /** 初始化周日的日期*/
		 calendar.add(Calendar.DAY_OF_MONTH,-calendar.get(Calendar.DAY_OF_WEEK)+1);//周日
		 Calendar SundayC=(Calendar) calendar.clone();
		 for(;SundayC.before(nexty);SundayC.add(Calendar.DAY_OF_YEAR,7)){
			 if(SundayC.after(nowyear)){
			 Date date = sdf.parse(SundayC.get(Calendar.YEAR)+"-"+(1+SundayC.get(Calendar.MONTH))+"-"+SundayC.get(Calendar.DATE));
			 String time=sdf.format(date);
			 SundayList.add(time);
			 }
		 }

二,得到三个月内的工作日

/**
		 * 得到三个月末的最后一天
		 */
		Calendar cal = Calendar.getInstance();
		  // 不加下面2行,就是取当前时间前一个月的第一天及最后一天
		cal.set(Calendar.YEAR,curYear);
		cal.set(Calendar.MONTH,curMonth+2);
		cal.set(Calendar.DAY_OF_MONTH, 1);
		cal.add(Calendar.DAY_OF_MONTH, -1);
		Date lastDate = cal.getTime();

		String start =curYear+"-"+curMonth+"-"+curDay;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date dBegin = null ;
		try {
			dBegin = sdf.parse(start);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		 WorkdayList.add(sdf.format(dBegin));

		 Calendar calBegin = Calendar.getInstance();
		 // 使用给定的 Date 设置此 Calendar 的时间
		 calBegin.setTime(dBegin);
		 Calendar calEnd = Calendar.getInstance();
		 // 使用给定的 Date 设置此 Calendar 的时间
		 calEnd.setTime(lastDate);
		 // 测试此日期是否在指定日期之后
		 while (lastDate.after(calBegin.getTime())){
		   // 根据日历的规则,为给定的日历字段添加或减去指定的时间量
		   calBegin.add(Calendar.DAY_OF_MONTH, 1);
		   WorkdayList.add(sdf.format(calBegin.getTime()));
		 }  

		 WorkdayList.removeAll(SaturdayList);
		 WorkdayList.removeAll(SundayList);

三、日期间的比较大小

date1.after(date2)
date1.before(date2)

四、Calendar中add() 与set()的区别

add()是移位,set()是设置

Calendar日期的计算

时间: 2024-11-01 16:57:36

Calendar日期的计算的相关文章

Date()日期简单计算

/** * 判断是否为闰年 * @param year * @return */ public boolean isLeap ( int year ) { if ( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ) return true; else return false; } /** * 判断某年某月总天数 * @param year * @param month * @return */ public int get

java中Calendar日期对象

转帖网上简介 Calendar c = Calendar.getInstance();//创建实例 默认是当前时刻 c.get(Calendar.YEAR); c.get(Calendar.MONTH); c.get(Calendar.DATE);//获取年,月,日 当然时分秒也可以 注意这里的月份比较特殊 从0开始 c.get(Calendar.DAY_OF_WEEK);//获取当前日期在星期中的第几天 从1-7对应 日-六 c.getActualMaximum(Calendar.DAY_OF

objective-c calendar 日期

NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间 Dates NSDate类提供了创建date,比较date以及计算两个date之间间隔的功能.Date对象是不可改变的. 如果你要创建date对象并表示当前日期,你可以alloc一个NSDate对象并调用init初始化: C代码   NSDate *now = [[NSDate alloc] init]; 或者使用NSDate的date类方法来创建一个日期对象.如果你需要与当前日期不同的日期,你可以使用NSDate的in

Java 根据给定的日期,计算两个日期之间的时间差

计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微秒时间差. 时间的兑换规则如下: 1s秒 = 1000ms毫秒 1min分种 = 60s秒 1hours小时 = 60min分钟 1day天 = 24hours小时 package com.qiyadeng.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDifferentExample { publ

[转]ASP.NET MVC HtmlHelper扩展之Calendar日期时间选择

本文转自:http://blog.bossma.cn/asp_net_mvc/asp-net-mvc-htmlhelper-calendar-datetime-select/ 这里我们扩展HtmlHelper,就像它包含在ASP.NET MVC中一样,扩展方法使我们能为已有的类添加方法.这里使用了一个日期时间选择控件:My97DatePicker,需要添加到网站中,并在页面中引用. 先看看是怎么扩展的: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

JAVA Calendar 日期加减

Date starttime=new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(starttime); cal.set(Calendar.DATE, cal.get(Calendar.DATE) - 2); starttime= cal.getTime(); JAVA Calendar 日期加减

mysql中的日期处理 计算 字符串截取

一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_

Java中时间日期的计算及相互转换

Java中表示时间日期的主要是Date和Calendar两个类,以及Date与String转换用到的SimpleDateFormat类. 0x00:Date与long类型之间的转换 Java内部使用UTC时间,保存距1970年01月01日00时00分00秒以来所经历的毫秒值,使用的是long类型. //需要导入java.util包里的Date类 import java.util.Date; long millis = 0; Date date = new Date(); //将date转为mil

PostgreSQL的日期运算计算函数使用

一:各个数据中的连接符 SqlServer的连接符:+(加号) Sqlite的连接符:.(点) PostgreSQL的连接符:||(或) 二: 今天在PostgreSQL计算日期的时候,翻了一些资料,很少,就记录下来吧~! 其中使用到的函数及变量 to_char().Date().now().current_date 计算两个日期的差 current_date为今天的日期,为:2015-06-03 Date('2015-06-05')-current_date=2 select   to_cha