java_日期格式转换(实例测试)
测试类:
import utils.DateUtils;
import vo.User;
import java.util.Date;
/**
* @ClassName: DateUtilsTest
* @Author: 江湖@小小白
* @Date: 2021/12/30 13:51
* @Description: 日期格式转换测试类
*/
public class DateUtilsTest {
public static void main(String[] args) {
//创建 User 对象
User user1 = new User();
user1.setId("1");
user1.setName("a");
user1.setAge(20);
user1.setBirthday("20210112");
user1.setCreateTime("2021-12-30 14:15:30");
System.out.println(user1);
System.out.println("=================================================================================");
User user2 = new User();
user2.setId("2");
user2.setName("b");
user2.setAge(21);
user2.setBirthday("2021-01-10");
user2.setCreateTime("2021-12-30 14:15:30");
System.out.println(user2);
System.out.println("=================================================================================");
//创建 User 对象
User user3 = new User();
user3.setId("3");
user3.setName("c");
user3.setAge(30);
user3.setBirthday("20210110");
user3.setCreateTime("2021-01-12 14:15:30");
System.out.println(user3);
System.out.println("=================================================================================");
//创建 User 对象
User user4 = new User();
user4.setId("3");
user4.setName("c");
user4.setAge(30);
user4.setBirthday("2021-01-10");
user4.setCreateTime("2021-01-12 14:15:30");
System.out.println(user4);
System.out.println("=================================================================================");
/**
* Test1:
* 8 位字符串时间格式 转为 10 位的横杠时间格式
* eg:20211230 转为 2021-12-30
*/
System.out.println(" Test1 —— 8 位字符串时间格式 转为 10 位的横杠时间格式: " + DateUtils.str8FormatStr10(user1.getBirthday()));
System.out.println("=================================================================================");
/**
* Test2:
* 8 位字符串时间格式 转为 10 位的斜杠时间格式
* eg:20211230 转为 2021/12/30
*/
System.out.println(" Test2 —— 8 位字符串时间格式 转为 10 位的斜杠时间格式: " + DateUtils.str8FormatStr10Slash(user1.getBirthday()));
System.out.println("=================================================================================");
/**
* Test3:
* 8 位日期格式的字符串 转化为 Date 类型
* eg:20211230 转为 Date;
*/
System.out.println(" Test3 —— 8 位日期格式的字符串 转化为 Date 类型: " + DateUtils.str8FormatDate(user1.getBirthday()));
System.out.println("=================================================================================");
/**
* Test4:
* 10 位日期格式的字符串 转化为 Date 类型
* eg:2021-12-30 转为 Date;
*/
System.out.println(" Test4 —— 10 位日期格式的字符串 转化为 Date 类型: " + DateUtils.str10FormatDate(user2.getBirthday()));
System.out.println("=================================================================================");
/**
* Test5:
* 8 位字符串日期转为 6 位字符串
* eg:20211230 转为 12-30
*/
System.out.println(" Test5 —— 8 位字符串日期转为 6 位字符串: " + DateUtils.str8FormatStr6(user1.getBirthday()));
System.out.println("=================================================================================");
/**
* Test6:
* 将 Date 类型的字段转化为 10 位横杠分割的日期字符串
*/
//8 位日期格式的字符串 转化为 Date 类型
Date date = DateUtils.str8FormatDate(user1.getBirthday());
System.out.println(" 调用 Test3 —— 8 位日期格式的字符串 转化为 Date 类型: " + DateUtils.str8FormatDate(user1.getBirthday()));
//将 Date 类型的字段转化为 10 位横杠分割的日期字符串
System.out.println(" Test6 —— 将 Date 类型的字段转化为 10 位横杠分割的日期字符串: " +DateUtils.dateFormatStr10(date));
System.out.println("=================================================================================");
/**
* Test7:
* 8 位字符串时间格式 转为 10 位的年月日时间格式,月和日以 0 开头就去掉 0,2022年1月11日
* 例如:20220111 转为 22-01-11
*/
System.out.println(" Test7 —— 8 位字符串时间格式 转为 10 位的年月日时间格式,月和日以 0 开头就去掉 0,20210110 日期格式转换: " + DateUtils.str8FormatStr10YMD(user3.getBirthday()));
System.out.println("=================================================================================");
/**
* Test8:
* 10 位字符串时间格式 转为 10 位的年月日时间格式,月和日以 0 开头就去掉 0,2022年1月11日
* 例如:2022-01-11 转为 22-01-11
*/
System.out.println(" Test8 —— 10 位字符串时间格式 转为 10 位的年月日时间格式,月和日以 0 开头就去掉 0,2021-01-10 日期格式转换: " + DateUtils.str10FormatStr10YMD(user4.getBirthday()));
System.out.println("=================================================================================");
}
}
测试结果1:
测试结果8::
实例类:
package vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
/**
* @ClassName: User
* @Author: 江湖@小小白
* @Date: 2021/12/21 10:20
* @Description: User
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
/**
* id
*/
private String id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 生日
*/
private String birthday;
/**
* 创建日期
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private String createTime;
}
DateUtils 工具类:
package utils;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @ClassName: DateUtils
* @Author: 江湖@小小白
* @Date: 2021/12/23 9:05
* @Description: 日期格式转换工具类
*/
public class DateUtils {
/**
* 8 位字符串时间格式 转为 10 位的横杠时间格式
* 例如:20211223 转为 2021-12-23
* @param str_date
* @return
*/
public static String str8FormatStr10(String str_date) {
String date = "";
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
try {
Date parseDate = parseFormat.parse(str_date);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 8 位字符串时间格式 转为 10 位的斜杠时间格式
* 例如:20211230 转为 2021/12/30
* @param str_date
* @return
*/
public static String str8FormatStr10Slash( String str_date ){
String date = "";
if ( StringUtils.isBlank(str_date) || str_date.length() != 8 ) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
try {
Date parseDate = parseFormat.parse(str_date);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 8位日期格式的字符串 转化为 Date 类型
* 例如:20211230 转为 Date;
* @param str_date
* @return
*/
public static Date str8FormatDate(String str_date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Date date = null;
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return null;
}
try {
date = dateFormat.parse(str_date);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 10 位日期格式的字符串 转化为 Date 类型
* 例如:2021-12-30 转为 Date;
* @param str_date
* @return
*/
public static Date str10FormatDate( String str_date ) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
if ( StringUtils.isBlank(str_date) || str_date.length() != 10 ) {
return null;
}
try {
date = dateFormat.parse(str_date);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 8 位字符串日期转为 6 位字符串
* 例如:20211230 转为 12-30
* @param str_date
* @return
*/
public static String str8FormatStr6(String str_date){
if (StringUtils.isBlank(str_date) || str_date.length() != 8) {
return "";
}
String dateStr = "";
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd");
try {
Date parse = parseFormat.parse(str_date);
dateStr = dateFormat.format(parse);
} catch (ParseException e) {
e.printStackTrace();
}
return dateStr;
}
/**
* 将 Date 类型的字段转化为 10 位横杠分割的日期字符串
* 例如:Date类型的字段 转为 2021-12-30
* @param date
* @return
*/
public static String dateFormatStr10(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
return dateFormat.format(date);
}
/**
* 8 位字符串时间格式 转为 10 位的年月日时间格式,月和日以 0 开头就去掉 0,2022年1月11日
* 例如:20220111 转为 2022年1月11日
* @param dateStr
* @return
*/
public static String str8FormatStr10YMD(String dateStr) {
String date = "";
if (StringUtils.isBlank(dateStr) || dateStr.length() != 8 ) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年M月d日");
try {
Date parseDate = parseFormat.parse(dateStr);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 10 位字符串时间格式 转为 10 位的年月日时间格式,月和日以 0 开头就去掉 0,2022年1月11日
* 例如:2022-01-11 转为 2022年1月11日
* @param dateStr
* @return
*/
public static String str10FormatStr10YMD(String dateStr) {
String date = "";
if (StringUtils.isBlank(dateStr) || dateStr.length() != 10 ) {
return "";
}
SimpleDateFormat parseFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年M月d日");
try {
Date parseDate = parseFormat.parse(dateStr);
date = dateFormat.format(parseDate);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}