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计算日期的更多相关文章
- POJ2080:Calendar(计算日期)
Calendar Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12842 Accepted: 4641 Descrip ...
- 计算日期时间 自动加1天 PHP计算闰年 java与PHP时间戳对比区别
昨天写一个同步数据库的模块 从一个数据库同步到另外一个数据库,因为数据较多,不可能一次性全部搬迁过去,所以就按照每天搬迁! 写了一个 模块,点击加1,只要点击一次,自动从A数据库取出1天的数据, 并 ...
- js计算日期相差的天数
在网站开发中,经常会遇到计算日期相差的天数,js 没有提供相应的方法,所以自己写一个,方便将来查看: 代码: function DateDiff(sDate1, sDate2, splitStr) { ...
- Java8中计算日期时间差
一.简述 在Java8中,我们可以使用以下类来计算日期时间差异: 1.Period 2.Duration 3.ChronoUnit 二.Period类 主要是Period类方法getYears(),g ...
- sqlserver计算日期
在网上找到的一篇文章,相当不错哦O(∩_∩)O~ 这是计算一个月第一天的SQL 脚本: SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --当月的第一 ...
- MySQL计算日期的函数DATE_SUB(d,INTERVAL expr type)
MySQL计算日期的函数DATE_SUB(d,INTERVAL expr type) DATE_SUB(d,INTERVAL expr type)函数返回起始日期d减去一个时间段后的日期. expr是 ...
- PostgreSQL 当月最后一天的工作日 , 计算日期是星期几
可以用pg自带函数select extract(dow from current_date),之所以没用主要是展示一下通过数学方法计算日期的原理. drop function if exists ge ...
- Java程序设计——反转字符串 & 找朋友 & 计算int型二进制1的个数 & 情报加密 & 计算日期 & 求近似数 & 输出较小数(练习1)
作为刚刚入门Java的选手,其实C++的功底起到了很大的作用.但是,Java之于C++最大的不同,我个人认为,是其类的多样性.才入门的我,写着老师布置的简单的面对过程的题,如果是C++,可以算是简单了 ...
- Calendar计算一个月前的日期,踩坑记录
错误示范:calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);//获取一个月前的今天这种写法假设传入的日期为2019-03-3 ...
随机推荐
- 使用Visual Studio 寻找App性能瓶颈
使用Visual Studio 寻找App性能瓶颈 最后更新日期:2014-05-05 阅读前提: 环境:Windows 8.1 64bit英文版,Visual Studio 2013 专业版Upda ...
- UML之部署图(Deployment Diagram)
计算机系统由硬件和软件组成,应用软件的命令,先转化为操作系统命令,再转化为汇编语言,最后再转化为二进制命令,由硬件来运行.软件要部署到硬件上才具有生命.Deployment Diagram展示的就是把 ...
- C 一个字符串有三段,第一段原样输出,第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段
C 一个字符串有三段,第一段原样输出.第二段为要输出字符串的长度,第三段为依据第二段长度补齐第一段 比如:输入abc 11 12.输出abc12121212 #include<stdio.h&g ...
- el表达式 分页提交 中文乱码
el表达式 分页提交 中文乱码 网上找了很多资料,没能解决我的问题.并不是说网上的那些资料不好.而是不适用于我的问题吧. 看看的的问题: 原始页面 单击下一页 , 乱码. 引起的原因则是因为自己的js ...
- 询问任意区间的min,max,gcd,lcm,sum,xor,or,and
给我们n个数,然后有m个询问,每个询问为L,R,询问区间[L,R]的最大最小值,最小公约数,最大公约数,和,异或,或,且 这些问题通通可以用RMQ的思想来解决. 以下用xor来作为例子 设dp[i][ ...
- 9patch(.9)怎么去掉自己画上的黑点/黑线
在自己制作.9.png图片的时候,制作之后所制作的图片上面会显示出制作的痕迹,也即是图片区域上会显示小黑点和黑线.那么为了真正的利用.9.png图片的使用效果.这些瑕疵当然是不能出现的了.因此,要想办 ...
- SVM-SVM概述
(一)SVM背景资料简介 支持向量机(Support Vector Machine)这是Cortes和Vapnik至1995首次提出,样本.非线性及高维模式识别中表现出很多特有的优势,并可以推广应用到 ...
- hadoop的一些名词解释
在网上收集了一些mapreduce中常用的一些名词的解释,分享一下: Shuffle(洗牌):当第一个map任务完成后,节点可能还要继续执行更多的map 任务,但这时候也开始把map任务的中间输出交换 ...
- iOS执行时与method swizzling
C语言是静态语言,它的工作方式是通过函数调用,这样在编译时我们就已经确定程序怎样执行的.而Objective-C是动态语言,它并不是通过调用类的方法来执行功能,而是给对象发送消息,对象在接收到消息之后 ...
- 数据验证validator 与 DWZ
在进行系统经常使用的数据验证.数据验证可以编写自己的,它也可以用来作为现在.现在,记录这两个库的使用, validator <!DOCTYPE HTML PUBLIC "-//W3C/ ...