两个时间点计算相隔几年,几个月,几天-java
本文采用Calendar 实现 ,当然也可以用java8提供的愉快且方便的时间处理- LocalDate
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class DateDaySub { private static Calendar calS = Calendar.getInstance();
private static Pattern p = Pattern.compile("\\d{4}-\\d{2}-\\d{2}");//定义整则表达式 /**
* 计算剩余时间
*
* @param startDateStr yyyy-MM-dd
* @param endDateStr yyyy-MM-dd
* @return ?年?个月?天
*/
public static String remainDateToString(String startDateStr, String endDateStr) {
java.util.Date startDate = null;
java.util.Date endDate = null;
try {
startDate = new SimpleDateFormat("yyyy-MM-dd").parse(startDateStr);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
try {
endDate = new SimpleDateFormat("yyyy-MM-dd").parse(endDateStr);
} catch (ParseException e) {
e.printStackTrace();
return "";
}
calS.setTime(startDate);
int startY = calS.get(Calendar.YEAR);
int startM = calS.get(Calendar.MONTH);
int startD = calS.get(Calendar.DATE);
int startDayOfMonth = calS.getActualMaximum(Calendar.DAY_OF_MONTH); calS.setTime(endDate);
int endY = calS.get(Calendar.YEAR);
int endM = calS.get(Calendar.MONTH);
//处理2011-01-10到2011-01-10,认为服务为一天
int endD = calS.get(Calendar.DATE) + 1;
int endDayOfMonth = calS.getActualMaximum(Calendar.DAY_OF_MONTH); StringBuilder sBuilder = new StringBuilder();
if (endDate.compareTo(startDate) < 0) {
return sBuilder.append("过期").toString();
}
int lday = endD - startD;
if (lday < 0) {
endM = endM - 1;
lday = startDayOfMonth + lday;
}
//处理天数问题,如:2011-01-01 到 2013-12-31 2年11个月31天 实际上就是3年
if (lday == endDayOfMonth) {
endM = endM + 1;
lday = 0;
}
int mos = (endY - startY) * 12 + (endM - startM);
int lyear = mos / 12;
int lmonth = mos % 12;
if (lyear > 0) {
sBuilder.append(lyear + "年");
}
if (lmonth > 0) {
sBuilder.append(lmonth + "个月");
}
// if(lyear==0)//满足项目需求 满一年不显示天数
if (lday > 0) {
sBuilder.append(lday + "天");
}
return sBuilder.toString();
} /*
* 转换 dataAndTime 2013-12-31 23:59:59 到
* date 2013-12-31
*/
public static String getDate(String dateAndTime) {
if (dateAndTime != null && !"".equals(dateAndTime.trim())) {
Matcher m = p.matcher(dateAndTime);
if (m.find()) {
return dateAndTime.subSequence(m.start(), m.end()).toString();
}
}
return "data error";
}
}
两个时间点计算相隔几年,几个月,几天-java的更多相关文章
- python的N个小功能(文本字段对应数值,经纬度计算距离,两个时间点计算时间间隔)
案例1 >>> import pandas as pd >>> df=pd.DataFrame({'A':[1,2,3],'B':[1,2,3],'C':[1,2, ...
- Java 8 表示两个时间点距离
Java JDK8 的 java.time API 提供全面的 date 和 time 的模型. 下面是一个使用案例:求两个时间点的距离. package com.tony.test; import ...
- php计算时间差/两个时间日期相隔的天数,时,分,秒.
function timediff( $begin_time, $end_time ) { if ( $begin_time < $end_time ) { $starttime = $begi ...
- javascript中计算两个时间日期间隔的天数
<script> /* 计算两个日期的时间间隔天数 */ //时间字符串的格 ...
- C#计算两个时间年份月份差
C#计算两个时间年份月份差 https://blog.csdn.net/u011127019/article/details/79142612
- 计算两个NSDate之间,相隔多少秒数
计算两个NSDate之间,相隔多少秒数 //两个时间间隔秒数 - (NSInteger)intervalSecondsWithSmallDate:(NSDate*)smallDate bigDate: ...
- java计算两个日期之间的相隔天数
[原创] 之前在很多竞赛的题目中有这样饿一类题,计算给定两个日期之间的相隔天数,或者很多类似的题目,都是需要转化到这个问题上时,之前用c++写的时候思想是这样的,一个结构体,包括年月日,还有一个计算下 ...
- js计算两个时间之间的间隔
计算时间间隔的方法有很多,这里只是一种方式,可以方法里直接传入两个时间,也可以传入两个字符串格式的时间,在方法里解析一下就ok,这个例子里不传入参数,直接在方法里随便写一个时间来演示一下 fun() ...
- java计算两个时间相差(天、小时、分钟、秒)
public static Long dateDiff(String startTime, String endTime, String format, String str) { // 按照传入的格 ...
随机推荐
- char与char的区别
char与varchar的区别 : char (13)长度固定, 如'www.qq.net' 存储需要空间 12个字符: varchar(13) 可变长 如'www.qq.net' 需要存储空间 9字 ...
- 复现 360 Unicorn Team 黑科技之 HackNFC
看了2条360 Unicorn Team的微博后,感觉蛮有趣的,打算复现一下 谷歌了下相关资料,在HACKADAY找到了介绍文章 还有2篇北邮工学硕士的论文,欢迎有兴趣的朋友和我一起交流~ 联系方式在 ...
- 【paper】MTCNN
参考 1. MTCNN笔记; 完
- JAVA高级篇(一、JVM基本概念)
一.什么是JVM VM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机. JVM也充当着一个翻译官的角色,我们编写出的Java程序,是不能够被操作系统所直接识别的,这时候J ...
- 关于loadrunner的了解
1.性能测试目的: 为什么要进行性能测试呢? 有些问题是只有在大并发或者压力测试下才会暴露出来的,在平常的公司内部测试中,感觉一切都是正常的,但是把服务放到生产线上,例如某个时刻突然有很多的用户要向 ...
- 12.python-metaclass元类
1.python中一切皆是对象,类本身也是一个对象,当使用关键字class的时候,python解释器在加载class的时候会创建一个对象(这里的对象指的是类而非类的实例) class Foo: #cl ...
- 1.Python
一.Python基础:1.第一句python文件后缀名:文件后缀名是.py2.两种执行方式:(1)把文件地址交给python解释器,python解释器去找到这个文件读到内存执行(2)进入解释器:解释器 ...
- websocket 心跳重连
websocket 的基本使用: var ws = new WebSocket(url); ws.onclose = function () { //something reconnect(); // ...
- PythonStudy——运算符优先级 Operator precedence
运算符优先级 以下所列优先级顺序按照从低到高优先级的顺序:同行为相同优先级. 1 Lambda #运算优先级最低 2 逻辑运算符: or 3 逻辑运算符: and 4 逻辑运算符:not 5 成员测试 ...
- golang-grpc-Unimplemented-desc
golang 调用grpc 服务方法时候提示:"rpc error: code = Unimplemented desc ="的错误, 这是由于pb中的package name 被 ...