java时间工具 判断时间大于一个月,小于一年,时间必须以月为单位分割(欢迎测试)
1 package test; 2 3 import java.io.UnsupportedEncodingException; 4 import java.text.ParseException; 5 import java.text.SimpleDateFormat; 6 import java.util.Base64; 7 import java.util.Calendar; 8 import java.util.Date; 9 10 public class Test { 11 public static void main(String[] args) throws UnsupportedEncodingException, ParseException { 12 /* 13 * Base64.Encoder encoder = Base64.getEncoder(); Base64.Decoder decoder 14 * = Base64.getDecoder(); String str="mx..05220416"; 15 * System.out.println(new 16 * String(decoder.decode("Z2hteDA1MjIwNDE2"),"UTF-8")); 17 */ 18 /* 19 * String time ="2018-01-02"; String time2 ="2019-01-02"; 20 * SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd"); 21 * //加上时间 Date begin=sDateFormat.parse(time); Date 22 * end=sDateFormat.parse(time2); //System.out.println(begin); 23 * System.out.println(begin.getTime()); 24 * System.out.println(end.getTime()); long oneyear=31536000; 25 * System.out.println(end.getTime()/1000-begin.getTime()/1000==oneyear); 26 * System.out.println(); 27 */ 28 29 String begin="2017-02-27"; 30 String end="2017-03-28"; 31 System.out.println(test(begin,end)); 32 } 33 34 public static boolean test(String beg,String ed) throws ParseException{ 35 boolean result=false; 36 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 37 Date date = format.parse(beg); 38 Date date2 = format.parse(ed); 39 // 开始时间 40 Calendar start = Calendar.getInstance(); 41 start.setTime(date); 42 // 结束时间 43 Calendar end = Calendar.getInstance(); 44 end.setTime(date2); 45 if(testMonth(start,end)&&testYear(date,date2)&&testDay(start,end)){ 46 result=true; 47 } 48 return result; 49 } 50 51 52 53 public static boolean testDay(Calendar start,Calendar end){//时间必须要以月为单位分割 54 boolean result=false; 55 if(start.getActualMaximum(Calendar.DAY_OF_MONTH)==start.get(Calendar.DATE)){//说明这是开始时间是月份的最后一天 56 result=end.getActualMaximum(Calendar.DAY_OF_MONTH)==end.get(Calendar.DATE);//那么结束时间也需要是月份的最后一天 57 if(start.get(Calendar.DATE)==end.get(Calendar.DATE)){ 58 result=true; 59 } 60 } 61 if(start.getActualMaximum(Calendar.DAY_OF_MONTH)>start.get(Calendar.DATE)){//说明这是开始时间不是月份的最后一天 62 if(start.get(Calendar.DATE)==end.get(Calendar.DATE)){//结束时间和开始时间是不同月份的同一天 63 result=true; 64 }else if(start.get(Calendar.DATE)>end.get(Calendar.DATE)&&end.getActualMaximum(Calendar.DAY_OF_MONTH)==end.get(Calendar.DATE)){ 65 result=true; 66 } 67 else if(start.get(Calendar.DATE)<end.get(Calendar.DATE)&&start.getActualMaximum(Calendar.DAY_OF_MONTH)==start.get(Calendar.DATE)){ 68 result=true; 69 } 70 } 71 return result; 72 } 73 74 75 public static boolean testYear(Date date,Date date2){ 76 boolean result=false; 77 if(date2.getTime()/1000-date.getTime()/1000<31536000){//相差的时间不能大于一年 78 result=true; 79 } 80 System.out.println(date2.getTime()/1000-date.getTime()/1000); 81 return result; 82 } 83 84 public static boolean testMonth(Calendar start,Calendar end){ 85 boolean result=false; 86 int subMonthCount = (end.get(Calendar.YEAR) - start.get(Calendar.YEAR) == 0)//相差的月份 87 ? end.get(Calendar.MONTH) - start.get(Calendar.MONTH) // 同一年 88 : ((end.get(Calendar.YEAR) - start.get(Calendar.YEAR) >= 2) // 年数差超过2年 89 ? (end.get(Calendar.YEAR) - start.get(Calendar.YEAR) - 1) * 12 90 + start.getActualMaximum(Calendar.MONTH) - start.get(Calendar.MONTH) 91 + end.get(Calendar.MONTH) + 1 92 : start.getActualMaximum(Calendar.MONTH) - start.get(Calendar.MONTH) 93 + end.get(Calendar.MONTH) + 1); // 年数差为1,Calendar.get(MONTH) 94 // 第一月是0,所以+1 95 //System.out.println(subMonthCount); 96 if(subMonthCount<1){//相差月份必须大于一个月 97 result=false; 98 }else{ 99 result=true; 100 } 101 return result; 102 } 103 104 105 }
//欢迎测试

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
利用Java编码测试CSRF令牌验证的Web API
前一篇拙文是利用了Jmeter来测试带有CSRF令牌验证的WebAPI;最近几天趁着项目不忙,练习了用编码的方式实现。 有了之前Jmeter脚本的基础,基本上难点也就在两个地方:获取CSRF令牌、Cookie的传递。 首先添加依赖,在POM.xml中添加以下内容: <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup --> <dependency> <groupId>...
-
下一篇
北上深程序猿纷纷“入杭”!杭州工程师人才净流入率全国第一
在继北京西二旗程序员,上海张江码农,深圳南山技术男后,中国工程师群体又多了一个冉冉升起的门派:杭派工程师。 据猎聘《2018中国重点城市工程师大数据与调研报告》显示,2017年一季度到2018年二季度期间,互联网工程师人才净流入分布情况,杭州以12.46%的流入率排名第一。 在流入杭州的工程师中,来自上海的最多,达到23.56%;其次是北京和深圳,占比依次为17.21%和6.91%。这意味着,北上深为杭州贡献了近一半的“杭漂”工程师。BOSS直聘研究院《2018中国海归人才就业选择报告》显示,2018年上半年应届海归人才最青睐的城市中,杭州海归占比增幅居全国首位,增幅为0.66%。相比之下,北京、上海的海归人才占比增幅都呈负增长,分别下降了1.28%和0.26%。 猎聘调研报告显示,“杭”情看涨的原因,是在这座城市生活的幸福感较高。杭派工程师幸福感指数达30.68%,比排名第二的广州还高出10个百分点。 其次是收入较高。杭州房价低于北上广深,但在收入上却能与北上广深基本持平。 另外,互联网巨头如阿里巴巴,也具有很强的吸引力。 此外,“杭派工程师”的日常通勤时间短,算得上是个大福利了。猎...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL数据库在高并发下的优化方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19
- Dcoker安装(在线仓库),最新的服务器搭配容器使用