Date userTime = getMonthDate(new Date(),Integer.valueOf(iptvGood.getUseTime()));
public static Date getMonthDate(Date startDate, int month){
LocalDateTime localDateTime = startDate.toInstant()
.atZone(ZoneId.systemDefault() )
.toLocalDateTime().plusMonths(month);
Date date = Date.from(localDateTime.atZone( ZoneId.systemDefault()).toInstant());
return date;
}
这个方法可以完成时间上的加减,但是输出的时间是Sat Dec 10 14:23:31 CST 2022 类似这种格式的.可以使用一下形式进行转换 : (也可以自己写字符串截取的方法的形式进行拼接转换)
String str = "Sat Dec 10 13:52:40 CST 2022";
Date date = parse(str, "EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);
System.out.printf("%tF %<tT%n", date);
public static Date parse(String str, String pattern, Locale locale) {
if(str == null || pattern == null) {
return null;
}
try {
return new SimpleDateFormat(pattern, locale).parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
public static String format(Date date, String pattern, Locale locale) {
if(date == null || pattern == null) {
return null;
}
return new SimpleDateFormat(pattern, locale).format(date);
}
也有更加简单的,完成后不需要转换的方法 :
LocalDateTime futureDayTime = LocalDateTime.now().plusDays(天数);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String userTime = futureDayTime.format(formatter);
计算两个时间差(到秒, 到分, 到时, 到天)
package com.bc.tour.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
/**
* @author: gst
* @date: 2023/4/6 16:29
*/
public class TimeDiffUtil {
//计算两个时间相差的秒数
public static long getTime(String startTime, String endTime ,String type){
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long eTime = 0;
long sTime = 0;
try {
eTime = df.parse(endTime).getTime();
sTime = df.parse(startTime).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
//秒
if (type.equals("1")){
long diff = (eTime - sTime) / 1000;
return diff;
}
//分
if (type.equals("2")){
long diff = (eTime - sTime) /60 / 1000;
return diff;
}
//时
if (type.equals("3")){
long diff = (eTime - sTime) /60 /60 / 1000;
return diff;
}
//天
if (type.equals("4")){
long diff = (eTime - sTime) /24 /60 /60 / 1000;
return diff;
}
return 0;
}
/**
* 统计两个时间的时间差
* two-one
* 相差几秒几毫秒
*/
public static String getDistanceTime(String str1, String str2) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
long day = 0;//天数差
long hour = 0;//小时数差
long min = 0;//分钟数差
long second=0;//秒数差
long diff=0 ;//毫秒差
String result = "";
try {
final Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
one = df.parse(str1);
c.setTime(one);
two = df.parse(str2);
long time1 = one.getTime();
long time2 = two.getTime();
diff = time2 - time1;
day = diff / (24 * 60 * 60 * 1000);
hour = (diff / (60 * 60 * 1000) - day * 24);
min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
second = diff/1000;
System.out.println("day="+day+" hour="+hour+" min="+min+" ss="+second%60+" SSS="+diff%1000);
String daystr = day%30+"天";
String hourStr = hour%24+"小时";
String minStr = min%60+"分";
String secondStr = second%60+"秒";
if (day!=0){
result = result + daystr;
}
if (hour!=0){
result = result + hourStr;
}
if (min!=0){
result = result + minStr;
}
if (second!=0){
result = result + secondStr;
}
} catch (ParseException e) {
e.printStackTrace();
}
return result;
}
}