import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.util.Date;
import static cn.hutool.core.date.LocalDateTimeUtil.parseDate;
/**
* 时间工具类
*/
public class MyTimeUtils {
public static void main(String[] args) throws Exception {
// 将String类型的时间转化为Date类型的时间
String strDate = "2024-04-02 21:10:10";
Date date = stringToDate(strDate);
System.out.println("将String类型的时间转化为Date类型的时间前:" + strDate);
System.out.println("将String类型的时间转化为Date类型的时间后:" + date);
System.out.println();
// 获取当前日期和时间
System.out.println("获取当前日期和时间:" + getCurrentTimeYMDHMS());
// 获取当前时间年月日,格式为 YYYY 年 MM 月 dd 日
System.out.println("获取当前时间年日日:" + getCurrentTimeYMD());
// 获取当前时间年月日,格式为 YYYY 年 MM 月 dd 日
System.out.println("获取当前时间年月日2:" + getCurrentTimeYMD2());
// 获取当前时间年,格式为 YYYY
System.out.println("获取当前时间年:" + getCurrentTimeYY());
// 获取当前时间月,格式为 MM
System.out.println("获取当前时间月:" + getCurrentTimeMM());
// 获取当前时间日,格式为 DD
System.out.println("获取当前时间日:" + getCurrentTimeDD());
// 计算两个日期之间的时间差(以年为单位)
String startDateStr = "2020-01-01";
String endDateStr = "2024-04-02";
System.out.println("计算两个日期之间的时间差(以年为单位):" + calculateDifferenceInYears(startDateStr, endDateStr));
//获取当前的时间戳
System.out.println("获取当前的时间戳:" + getCurrentTimeMillis());
//比较两个日期的大小
String date1 = "2020-01-01";
String date2 = "2024-04-02";
System.out.println("比较两个日期的大小:" + compareDate(date1, date2));
}
/**
* 获取当前日期和时间,格式为 YYYY-MM-dd HH:mm:ss
*
* @return
*/
public static String getCurrentTimeYMDHMS() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
return dateFormat.format(date);
}
/**
* 获取当前时间年日日,格式为 YYYY-MM-dd
*
* @return
*/
public static String getCurrentTimeYMD() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd");
return dateFormat.format(date);
}
/**
* 获取当前时间年月日,格式为 YYYY 年 MM 月 dd 日
*
* @return
*/
public static String getCurrentTimeYMD2() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY 年 MM 月 dd 日");
return dateFormat.format(date);
}
/**
* 获取当前时间年,格式为 YYYY
*
* @return
*/
public static String getCurrentTimeYY() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY");
return dateFormat.format(date);
}
/**
* 获取当前时间月,格式为 MM
*
* @return
*/
public static String getCurrentTimeMM() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
return dateFormat.format(date);
}
/**
* 获取当前时间日,格式为 DD
*
* @return
*/
public static String getCurrentTimeDD() {
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("dd");
return dateFormat.format(date);
}
/**
* 将String类型的时间转化为Date类型的时间
*
* @param strDate
* @return
* @throws Exception
*/
public static Date stringToDate(String strDate) throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(strDate);
}
/**
* 计算两个日期之间的时间差(以年为单位)
*
* @param startDateStr 开始日期
* @param endDateStr 结束日期
* @return
*/
public static String calculateDifferenceInYears(String startDateStr, String endDateStr) {
LocalDate startDate = parseDate(startDateStr);
LocalDate endDate = parseDate(endDateStr);
// 将结束日期加一天,以包含结束日期当天
endDate = endDate.plusDays(1);
// 计算 Period
Period period = Period.between(startDate, endDate);
// 判断是否满年
if (period.getMonths() == 0 && period.getDays() == 0) {
// 满年,输出整数
return period.getYears() + "".split("\\.0")[0];
} else {
// 不满年,输出整数年 + 月份的小数部分
double years = period.getYears() + (double) period.getMonths() / 12;
return String.format("%.1f", years); // 保留一位小数
}
}
/**
* 获取当前的时间戳
*
* @return
*/
public static long getCurrentTimeMillis() {
return System.currentTimeMillis();
}
/**
* 比较两个日期的大小
* 如果date1大于date2,返回1;
* 如果date1小于date2,返回-1;
* 如果date1等于date2,返回0。
*
* @param date1 日期1
* @param date2 日期2
* @return
*/
public static int compareDate(String date1, String date2) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dt1 = sdf.parse(date1);
Date dt2 = sdf.parse(date2);
if (dt1.getTime() > dt2.getTime()) {
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
return -1;
} else {
return 0;
}
}
}
时间工具类(简单版)拿来就用
最新推荐文章于 2025-06-09 22:36:20 发布