两个时间点计算相隔几年,几个月,几天-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) { // 按照传入的格 ...
随机推荐
- css实现半圆和圆
1.半圆 半圆分为:上半圆.下半圆.左半圆.右半圆,我们只要学会制作某一个方向的半圆,其他方向的半圆都可以轻松实现,其原理都一样. 假如我们要制作上半圆,实现原理:把高度height设置为宽度widt ...
- java service 安装
sudo ln -s /var/services/video/video-live.jar /etc/init.d/live-service sudo chmod +x /var/services/v ...
- 第二周例行报告psp
此作业要求详见https://edu.cnblogs.com/campus/nenu/2018fall/homework/2127 (1)psp表 本周进度条 累计进度图 本周PSP饼状图
- Tcl脚本整理照片
我那个媳妇啊,典型的只管照不管 理,32G的卡竟然被弄满了. 费好大劲好不容易整理到电脑上,可是都是数字名字,看着都头疼,索性整理下. 首先安装tcl编译环境tcl86,度娘搞的,然后开动: proc ...
- L2-023. 图着色问题*
L2-023. 图着色问题 参考博客 #include <iostream> #include <cstring> #include <set> using nam ...
- How Region Split works in Hbase
A region is decided to be split when store file size goes above hbase.hregion.max.filesize or accord ...
- 隔离级别简介 (mysql)
隔离级别:一个事务必须与由其他事务进行的资源或数据更改相隔离的程度.隔离级别从允许的并发副作用(例如,脏读或虚拟读取)的角度进行描述. 定义 编辑 事务指定一个隔离级别,该隔离级别定义一个事务必须与由 ...
- Go Example--排序
package main import ( "fmt" "sort" ) func main() { strs := []string{"c" ...
- PythonStudy——字符串、列表、元组、字典、集合 (str、list、tuple、dict、set)常用方法总结
字符串: # 字符串类型的一些操作(str)st1='hello world 'print(st1[0]) # 根据字符串索引来取字符h 找不到直接崩print(st1[-1]) # 根据索引倒取st ...
- (转)python logging模块
python logging模块 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python ...