91 lines
3.3 KiB
Java
91 lines
3.3 KiB
Java
package com.kexue.skills.common.util;
|
||
|
||
|
||
import cn.hutool.core.date.DateUtil;
|
||
import cn.hutool.core.util.StrUtil;
|
||
|
||
import java.util.Date;
|
||
|
||
/**
|
||
* @author 维哥
|
||
* @Description
|
||
* @create 2025-03-03 10:58
|
||
*/
|
||
public class DateConverter {
|
||
|
||
/**
|
||
* 将中文日期格式转换为标准格式(yyyy-MM-dd)
|
||
* @param chineseDate 示例:"2025年2月22日"
|
||
* @return 示例:"2025-02-22"
|
||
*/
|
||
public static String convertChineseDate(String chineseDate) {
|
||
if (StrUtil.isBlank(chineseDate)) return null;
|
||
return DateUtil.parse(chineseDate.replace("日", ""), "yyyy年M月d")
|
||
.toString("yyyy-MM-dd");
|
||
}
|
||
|
||
/**
|
||
* 将简写时间转换为标准时间格式(HH:mm:ss)
|
||
* @param shortTime 示例:"1:30" 或 "12:5"
|
||
* @return 示例:"01:30:00" 或 "12:05:00"
|
||
*/
|
||
public static String convertShortTime(String shortTime) {
|
||
if (StrUtil.isBlank(shortTime)) return null;
|
||
|
||
// 处理缺失前导零的情况
|
||
String[] parts = shortTime.split(":");
|
||
if (parts.length != 2) return null;
|
||
|
||
String hours = String.format("%02d", Integer.parseInt(parts[0]));
|
||
String minutes = String.format("%02d", Integer.parseInt(parts[1]));
|
||
|
||
return DateUtil.parseTime(hours + ":" + minutes + ":00").toString("HH:mm:ss");
|
||
}
|
||
|
||
public static Date convertChineseDateTime(String chineseDate, String shortTime){
|
||
Date date = null;
|
||
|
||
try {
|
||
// 清洗非法null字符串
|
||
if(chineseDate != null) {
|
||
chineseDate.replace(" ","");
|
||
chineseDate = chineseDate.replace(" null", ""); // 替换时间部分的null
|
||
chineseDate = chineseDate.replace("null", ""); // 处理其他可能的null情况
|
||
chineseDate = convertChineseDate(chineseDate);
|
||
}
|
||
|
||
if(shortTime != null) {
|
||
shortTime.replace(" ","");
|
||
shortTime = shortTime.replace(" null", ""); // 替换时间部分的null
|
||
shortTime = shortTime.replace("null", ""); // 处理其他可能的null情况
|
||
shortTime = convertShortTime(shortTime);
|
||
}
|
||
|
||
if (StrUtil.isNotBlank(chineseDate) && StrUtil.isNotBlank(shortTime)){
|
||
date = DateUtil.parse(chineseDate+ " " + convertShortTime(shortTime)==null?"00:00:00":convertShortTime(shortTime));
|
||
}
|
||
if (StrUtil.isNotBlank(chineseDate) && StrUtil.isBlank(shortTime)){
|
||
return DateUtil.parse(chineseDate);
|
||
}
|
||
} catch (Exception e) {
|
||
e.printStackTrace();//
|
||
}
|
||
date = DateUtil.parse(chineseDate + " 00:00:00");
|
||
return date;
|
||
}
|
||
|
||
public static String convertChineseDateTimeStr(String chineseDate, String shortTime){
|
||
if (StrUtil.isNotBlank(chineseDate) || StrUtil.isNotBlank(shortTime)){
|
||
return convertChineseDate(chineseDate)+ " " + convertShortTime(shortTime);
|
||
}
|
||
return "";
|
||
}
|
||
|
||
// 测试示例
|
||
public static void main(String[] args) {
|
||
System.out.println(convertChineseDate("2025年2月22日")); // 输出:2025-02-22
|
||
System.out.println(convertShortTime("1:30")); // 输出:01:30:00
|
||
System.out.println(convertShortTime("12:5")); // 输出:12:05:00
|
||
}
|
||
}
|