需求
有些特殊的日志格式例如:
2021-12-19T16:00:00.000+00:00
Fri May 18 15:46:24 CST2016
这些无法装换成我们内部的时间日期类
要求提供两个方法:
parse 将String转成com.fxiaoke.functions.Date
format将com.fxiaoke.functions.Date转成String
实现
parse(String dateStr, String dateFormat)方法:
dateStr: 传入的日期时间的字符串
dateFormat: 传入日期时间字符串的日期时间格式,如yyyy.MM.dd等
函数作用:将传入dateFormat格式的字符串转化为com.fxiaoke.functions.Date类型
return: Date fsDate(com.fxiaoke.functions.Date)
format(Date date, String dateFormat)方法:
date: 传入的Date(com.fxiaoke.functions.Date)类型的date
dateFormat: 传入日期时间字符串的日期时间格式,如yyyy.MM.dd等
函数作用:将输入的Date类型都转为dateFormat格式的字符串
return: String timeStr
java代码:
package com.fxiaoke.functions.util;
import com.fxiaoke.functions.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.text.SimpleDateFormat;
public class DateUtil {
private static DateTimeFormatter DATE_PATTERN_LINE = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private static final Logger LOGGER = LoggerFactory.getLogger(DateUtil.class);
public static Long parseDateStr(String dateStr) {
try {
if (dateStr == null) {
return null;
}
LocalDate localDate = LocalDate.parse(dateStr.trim(), DATE_PATTERN_LINE);
ZonedDateTime zdt = localDate.atStartOfDay(ZoneId.systemDefault());
return java.util.Date.from(zdt.toInstant()).getTime();
} catch (Exception e) {
LOGGER.error("parseDateStr error:{}",e.getMessage(),e);
}
return null;
}
//把所有的市面上的日期时间格式的String类型转成我们自己的日期时间格式
public static Date parse(String dateStr, String dateFormat){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
try {
java.util.Date date = simpleDateFormat.parse(dateStr);
Date fsDate = Date.of(date.getTime());
return fsDate;
} catch (Exception e) {
LOGGER.error("parse error:{}", e.getMessage(), e);
}
return null;
}
public static String format(Date date, String dateFormat){
Long timeStep = date.toTimestamp();
java.util.Date dat = new java.util.Date(timeStep);
String timeStr = new SimpleDateFormat(dateFormat).format(dat);
return timeStr;
}
public static void main(String[] args) {
String dateStr = "2021-03-08";
Long dateTime = parseDateStr(dateStr);
System.out.println(dateTime);
String dateStr1 = "2022.06.17-16:08:56";
Date date = parse(dateStr1, "yyyy.MM.dd-HH:mm:ss");
System.out.println(date);
Date date1 = Date.now();
String dateFormat = "yyyy-MM-dd.HH";
String fsDate = format(date1, dateFormat);
System.out.println(fsDate);
}
}