java指定日期转特定格式工具类
一、运行效果
字符串日期转日期时间:Sat Jan 20 00:00:00 CST 2024
年月日时分秒:2024-01-15 15:10:23
年月日:2024-01-15
年月日:20240115
年月:2024-01
年月:202401
年:2024
月:01
指定日期加月数:2024-03-15 15:10:23
相隔天数:5
Process finished with exit code 0
二、main测试方法
DateMain.java代码如下:
import java.util.Date;
public class DateMain {
public static void main(String[] args) {
// 字符串日期转日期时间
String str = "2024-01-20";
Date date = DateUtils.toDate(str,DateUtils.YYYY_MM_DD); // 这里可以指定任意类型的字符串时间
System.out.println("字符串日期转日期时间:"+date);
// 获取年月日时分秒
String dateToStr = DateUtils.dateToStr(new Date());
System.out.println("年月日时分秒:"+dateToStr);
// 获取年月日
String dateToYYYY_MM_DD = DateUtils.dateToYYYY_MM_DD(new Date());
System.out.println("年月日:"+dateToYYYY_MM_DD);
// 获取年月日
String dateToYYYYMMDD = DateUtils.dateToYYYYMMDD(new Date());
System.out.println("年月日:"+dateToYYYYMMDD);
// 获取年月
String dateToYYYY_MM = DateUtils.dateToYYYY_MM(new Date());
System.out.println("年月:"+dateToYYYY_MM);
// 获取年月
String dateToYYYYMM = DateUtils.dateToYYYYMM(new Date());
System.out.println("年月:"+dateToYYYYMM);
// 获取年
String dateToYYYY = DateUtils.dateToYYYY(new Date());
System.out.println("年:"+dateToYYYY);
// 获取月
String dateToMM = DateUtils.dateToMM(new Date());
System.out.println("月:"+dateToMM);
// 给指定日期加月数,当前月2024-01 + 02 = 2024-03
String subMonths = DateUtils.changeDateMonth(new Date(),2);
System.out.println("指定日期加月数:"+subMonths);
// 指定两个日期相减计算相隔天数
String base = "2024-01-20";
Date date1 = DateUtils.toDate(base,DateUtils.YYYY_MM_DD);
System.out.println("相隔天数:"+DateUtils.getSubDays(new Date(),date1));
}
}
三、工具类
工具类DateUtils.java代码如下:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 时间工具类
*/
public class DateUtils {
public static final String YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String YYYYMMDD = "yyyyMMdd";
public static final String YYYYMM = "yyyyMM";
public static final String YYYY_MM = "yyyy-MM";
public static final String YYYY = "yyyy";
public static final String MM = "MM";
/**
* 获取年月日时分秒:2023-12-01 14:08:57
* @param d
* @return
*/
public static String dateToStr(Date d) {
return toString(d, YYYY_MM_DD_HH_MI_SS);
}
/**
* 获取年月日:2023-12-01
* @param d
* @return
*/
public static String dateToYYYY_MM_DD(Date d) {
return toString(d, YYYY_MM_DD);
}
/**
* 获取年月日:20231201
* @param d
* @return
*/
public static String dateToYYYYMMDD(Date d) {
return toString(d, YYYYMMDD);
}
/**
* 获取年月:2023_12
* @param d
* @return
*/
public static String dateToYYYY_MM(Date d) {
return toString(d, YYYY_MM);
}
/**
* 获取年月:202312
* @param d
* @return
*/
public static String dateToYYYYMM(Date d) {
return toString(d, YYYYMM);
}
/**
* 获取年:2023
* @param d
* @return
*/
public static String dateToYYYY(Date d) {
return toString(d, YYYY);
}
/**
* 获取月:12
* @param d
* @return
*/
public static String dateToMM(Date d) {
return toString(d, MM);
}
/**
* 特定日期格式转换成字符类型
* @param d
* @param pattern
* @return
*/
private static String toString(Date d, String pattern) {
if(d == null){
return null;
}
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(d);
}
/**
* 特定字符转日期时间
* @param dateString
* @param pattern
* @return
* @throws ParseException
*/
public static Date toDate(String dateString, String pattern){
// 默认当前时间
Date date = new Date();
try{
SimpleDateFormat format = new SimpleDateFormat(pattern);
date = format.parse(dateString);
}catch (Exception e){
e.printStackTrace();
}
return date;
}
/**
* 指定两个日期相减计算相隔天数
* @param d1
* @param d2
* @return
*/
public static int getSubDays(Date d1, Date d2) {
Calendar c1 = Calendar.getInstance();
c1.setTime(d1);
Calendar c2 = Calendar.getInstance();
c2.setTime(d2);
return c2.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);
}
/**
* 给指定日期加月数
* @param d1
* @param
* @return
*/
public static String changeDateMonth(Date d1, int month) {
Calendar c1 = Calendar.getInstance();
c1.setTime(d1);
c1.add(Calendar.MONTH,month);
Date date = c1.getTime();
// 将加了月份的日期转换成年月日时分秒类型的,这里也可以自定义时间格式
return dateToStr(date);
}
}
总结
日常开发工作中用到的日期转换基本就是以上这些,DateUtils工具类可以拷贝复制到项目中直接使用。