方法一 JS格式化
function dateFormat(fmt, date) { let ret; const opt = { "Y+": date.getFullYear().toString(), // 年 "m+": (date.getMonth() + 1).toString(), // 月 "d+": date.getDate().toString(), // 日 "H+": date.getHours().toString(), // 时 "M+": date.getMinutes().toString(), // 分 "S+": date.getSeconds().toString() // 秒 // 有其他格式化字符需求可以继续添加,必须转化成字符串 }; for (let k in opt) { ret = newRegExp("(" + k + ")").exec(fmt); if (ret) { fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0"))) }; }; return fmt; }
let date = newDate(); dateFormat("YYYY-mm-dd HH:MM:SS", date);
方法二 后端SimpleDateFormat格式化
// 定义时间格式化对象和定义格式化样式 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 格式化时间对象 String date = dateFormat.format(new Date())
@RequestMapping("/list") public List<UserInfo> getList() { // 定义时间格式化对象 SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<UserInfo> list = userMapper.getList(); // 循环执行时间格式化 list.forEach(item -> { // 使用预留字段 ctime 接收 createtime 格式化的时间(Date->String) item.setCtime(dateFormat.format(item.getCreatetime())); item.setUtime(dateFormat.format(item.getUpdatetime())); }); return list; }
方法三 DateTimeFormatter格式化
JDK8后可以使用DateTimeFormatter替代SimpleDateFormat,因为SimpleDateFormat是非线程安全的,而DateTimeFormatter是线程安全的,所以JDK8+的项目,尽量使用 DateTimeFormatter来进行时间格式化
@RequestMapping("/list") public List<UserInfo> getList() { // 定义时间格式化对象 DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); List<UserInfo> list = userMapper.getList(); // 循环执行时间格式化 list.forEach(item -> { // 使用预留字段 ctime 接收 createtime 格式化的时间(Date->String) item.setCtime(dateFormat.format(item.getCreatetime())); item.setUtime(dateFormat.format(item.getUpdatetime())); }); return list; }
方法四 全局时间格式化
在SpringBoot的配置文件application.properties(application.yml)中添加配置
# 格式化全局时间字段 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss # 指定时间区域类型 spring.jackson.time-zone=GMT+8
Controller在返回数据时,会自动调用 Spring Boot 框架中内置的 JSON 框架 Jackson,对返回的数据进行统一的 JSON 格式化处理,在处理的过程中它会判断配置文件中是否设置了“spring.jackson.date-format=yyyy-MM-dd HH:mm:ss”,如果设置了,那么 Jackson 框架在对时间类型的字段输出时就会执行时间格式化的处理,通过配置来实现全局时间字段的格式化功能了。
方法五 局部时间格式化
在实体类中添加 @JsonFormat 注解,可以实现时间的格式化功能
import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; import java.util.Date; @Data publicclass UserInfo { privateint id; private String username; // 对 createtime 字段进行格式化处理 @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8") private Date createtime; private Date updatetime; }