计算两个日期之间的时间段秒数差
## 计算两个日期之间的时间
package com.yb.mybatis;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
-
计算两个时间字段之间的秒
-
两个字段标准格式是:yyyy-MM-dd HH:mm:ss.xxxx
-
@autor dyl
-
@Date 2020/10/19
*/
public class utiltime {public static final SimpleDateFormat datetimeFormat = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
public static final SimpleDateFormat date_sdf = new SimpleDateFormat(“yyyy-MM-dd”);/**
*用来测试的主方法
*/public static void main(String[]args) throws ParseException {
int secondetime = secondetime(“2012-01-11 10:30:40.252525”, “2012-01-11 10:30:59.25”);
System.out.println(“这个时间段中间有:”+secondetime+“秒”);
}/**
*-
@param fstarttime
-
@param fendtime
-
@return 返回有多少秒
-
@throws ParseException
*/
public static int secondetime(String fstarttime,String fendtime)throws ParseException {
String gettime1= Stringbuf(fstarttime);//前面时间
String gettime2= Stringbuf(fendtime);//后面时间
List dateList = getDateList(gettime1, gettime2);
int r=dateList.size()-1;
Date firstTime = datetimeFormat.parse(gettime1); //当前系统时间
Date currentTime = datetimeFormat.parse(gettime2); //查询的数据时间
String date1 = datetimeFormat.format(firstTime);//前面时间
String str1=date1.substring(11,13);//截取的是时
String s1=date1.substring(14,16);//截取的是分
String f1=date1.substring(17,19);//截取的时秒
String date = datetimeFormat.format(currentTime);//后面时间
String str=date.substring(11,13);
String s=date.substring(14,16);
String f=date.substring(17,19);String time = getTime(currentTime,firstTime);//时分秒
String [] t=time.split("????;
int value1=0;
int value2=0;
if(Integer.valueOf(t[0])!=0) {
value1 = Integer.valueOf(t[0])6060;
}
if(Integer.valueOf(t[1])!=0) {
value2=Integer.valueOf(t[1])*60;
}
int value3=Integer.valueOf(t[2]);
if(Integer.valueOf(str)<Integer.valueOf(str1)||Integer.valueOf(str)==Integer.valueOf(str1)&&Integer.valueOf(s)<Integer.valueOf(s1)||Integer.valueOf(f)<Integer.valueOf(f1)&&Integer.valueOf(s)<=Integer.valueOf(s1)&&Integer.valueOf(str)<=Integer.valueOf(str1)){
r=r-1;
}
int second = second®;//这个年有多少秒
int zong=value1+value2+value3+second;
return zong;
}
/**
*- @param str
- @return 返回截取的字符串
*/
public static String Stringbuf(String str){
String d = str.substring(0, 19);
return d;
}
/**
*- @param currentTime
- @param firstTime
- @return 获取时间差方法显示时:分:秒
/
public static String getTime(Date currentTime,Date firstTime){
long diff = currentTime.getTime() - firstTime.getTime();//这样得到的差值是微秒级别
Calendar currentTimes =dataToCalendar(currentTime);//当前系统时间转Calendar类型
Calendar firstTimes =dataToCalendar(firstTime);//查询的数据时间转Calendar类型
int day = currentTimes.get(Calendar.DAY_OF_MONTH) - firstTimes.get(Calendar.DAY_OF_MONTH);
if (day < 0) {
currentTimes.add(Calendar.MONTH, -1);
}
long days = diff / (1000 * 60 * 60 * 24);
long hours = (diff-days(1000 * 60 * 60 * 24))/(1000* 60 * 60); //获取时
long minutes = (diff-days*(1000 * 60 * 60 * 24)-hours*(1000* 60 * 60))/(1000* 60); //获取分钟
long s=(diff/1000-days246060-hours6060-minutes60);//获取秒
String CountTime=hours+":"+minutes+":"+s;
return CountTime;
}
/**
*- @param date
- @return Date类型转Calendar类型
*/
public static Calendar dataToCalendar(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}/**
*- @param a
- @return 有多少天就计算多少秒
/
private static int second(int a){
int b=a246060;
return b;
}
/**
*- @return 转换日期格式
*/
public static Calendar getCalendar() {
return Calendar.getInstance();
}
public static String formatDate(long millis) {
return date_sdf.format(new Date(millis));
}/**
*- @param startDateStr
- @param endDateStr
- @return 返回数组从startDateStr到endDateStr日期
- @throws ParseException
*/
public static List getDateList(String startDateStr, String endDateStr) throws ParseException {
List result = new ArrayList<>();
// 将 str时间转为 Date 类型
Date startDate = datetimeFormat.parse(startDateStr);
Date endDate = datetimeFormat.parse(endDateStr);
// 这里主要借助于Calendar 对于两个时间的比较,来存储
Calendar startCal = getCalendar();
startCal.setTime(startDate);
Calendar endCal = getCalendar();
endCal.setTime(endDate);
do {
result.add(formatDate(startCal.getTimeInMillis()));
startCal.add(Calendar.DAY_OF_YEAR, 1);
} while (startCal.before(endCal));
// 因为精细度到 日期,所有最后一个日期难以处理,需要单独来做
String end = formatDate(endCal.getTimeInMillis());
if(!result.contains(end)) {
result.add(end);
}
return result;
}
-
}
下一篇: 判断两个时间段范围是否有交集