创建一个日期与字符串之间处理的工具

发布时间 2023-09-27 18:05:06作者: one剑飘红
package cn.com.maple.utils;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

/**
* @author LiDY
* @desc DateTime处理工具
* @date 2022-01-20 11:25:53
*/
public class DateTimeUtil {

private static transient final Logger logger = LogManager.getLogger(DateTimeUtil.class);

/**
* 把时间转换成整小时时刻时间
* 如:2022-01-20 10:40:52 -> 2022-01-20 10:00:00
* @param time 传入的DateTIme
* @return
*/
public static DateTime getHourDateTime(DateTime time) {
/*DateTime hourDateTime = null;
try {
String yyyyMMddHH = time.toString("yyyyMMddHH");
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMddHH");
hourDateTime = DateTime.parse(yyyyMMddHH, formatter);
} catch (Exception e) {
logger.error("[ERROR] DateTimeUtil.getHourDateTime(): {}", e.getMessage());
}
return hourDateTime;*/
return new DateTime(time.getYear(), time.getMonthOfYear(), time.getDayOfMonth(), time.getHourOfDay(), 0, 0);
}

/**
* 把时间转换成整10分钟时刻时间
* 如:2022-01-20 10:42:52 -> 2022-01-20 10:40:00
* @param time 传入的DateTIme
* @return
*/
public static DateTime get10MinuteDateTime(DateTime time) {
return new DateTime(time.getYear(), time.getMonthOfYear(), time.getDayOfMonth(), time.getHourOfDay(), time.getMinuteOfHour() / 10 * 10, 0);
}

/**
* 把时间转换成整分钟时刻时间
* 如:2022-01-20 10:42:52 -> 2022-01-20 10:42:00
* @param time 传入的DateTIme
* @return
*/
public static DateTime getMinuteDateTime(DateTime time) {
return new DateTime(time.getYear(), time.getMonthOfYear(), time.getDayOfMonth(), time.getHourOfDay(), time.getMinuteOfHour(), 0);
}

/**
* 把时间转成指定格式的字符串
* @param time 传入的DateTIme
* @param format 格式串,如:yyyyMMddHHmmss
* @return
*/
public static String getTimeStr(DateTime time, String format) {
return time.toString(format);
}

/**
*
* @param timeStr 传入的时间字符串,如 20220120123000
* @param format 与timeStr相匹配的格式 如 yyyyMMddHHmmss
* @return
*/
public static DateTime getDateTimeByFormat(String timeStr, String format) {
DateTimeFormatter formatter = DateTimeFormat.forPattern(format);
return DateTime.parse(timeStr, formatter);
}

/**
* @param sourceStr /YYYYMMDD/YYYYMMDDHHNNSS.VVV
* @param time
* @return
*/
public static String strReplace(String sourceStr, String suffix1, String suffix2,DateTime time) {
String YYYYMMDDHHNNSS = time.toString("yyyyMMddHHmmss");
String YYYYMMDDHHNN = time.toString("yyyyMMddHHmm");
String YYYYMMDDHH = time.toString("yyyyMMddHH");
String YYYYMMDD = time.toString("yyyyMMdd");
String YYYYMM = time.toString("yyyyMM");
String YYYY = time.toString("yyyy");

return sourceStr.replace("YYYYMMDDHHNNSS", YYYYMMDDHHNNSS)
.replace("YYYYMMDDHHNN", YYYYMMDDHHNN)
.replace("YYYYMMDDHH", YYYYMMDDHH)
.replace("YYYYMMDD", YYYYMMDD)
.replace("YYYYMM", YYYYMM)
.replace("YYYY", YYYY)
.replace(suffix1, suffix2);
}

/**
* 日期替换字符串占位符
* @param sourceStr /YYYYMMDD/YYYYMMDDHHNNSS.VVV
*/
public static String strFormatReplace(String sourceStr, String suffix1, String suffix2,DateTime time) {
String YYYY = time.toString("yyyy");
String YY = time.toString("yy");
String MM = time.toString("MM");
String DD = time.toString("dd");
String HH = time.toString("HH");
String NN = time.toString("mm");
String SS = time.toString("ss");

return sourceStr.replace("YYYY", YYYY)
.replace("YY", YY)
.replace("MM", MM)
.replace("DD", DD)
.replace("HH", HH)
.replace("NN", NN)
.replace("SS", SS)
.replace(suffix1, suffix2);
}




}