使用@JsonFormat和@DateTimeFormat对Date格式化操作的完整攻略如下:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
其中pattern属性指定日期格式化的格式,timezone属性指定时区。
@RequestMapping("/addUser")
@ResponseBody
public String addUser(User user, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date createTime) {
user.setCreateTime(createTime);
userService.addUser(user);
return "success";
}
在上面的代码中,我们使用了@DateTimeFormat注解,将createTime参数转换成了Date类型。
示例1:使用@JsonFormat注解格式化日期
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime;
}
// 在控制器中序列化对象
@RestController
public class UserController {
@RequestMapping("/user")
public User user() {
return new User(1, "Tom", new Date());
}
}
在浏览器中访问http://localhost:8080/user,返回的JSON格式如下:
{
"id": 1,
"name": "Tom",
"createTime": "2022-04-16 13:50:10"
}
我们可以看到createTime被格式化为了指定的格式。
示例2:使用@DateTimeFormat注解将字符串类型的时间格式转换成Date类型
import lombok.Getter;
import lombok.Setter;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Getter
@Setter
public class User {
private Integer id;
private String name;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
}
@Controller
public class UserController {
@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(User user) {
userService.addUser(user);
return "redirect:/userList";
}
}
// 在模板中使用表单提交时间
<form role="form" action="${pageContext.request.contextPath}/addUser" method="post">
<div class="form-group">
<label>用户名</label>
<input type="text" name="name" class="form-control" placeholder="请输入用户名">
</div>
<div class="form-group">
<label>创建时间</label>
<input type="text" name="createTime" class="form-control" placeholder="请输入创建时间,格式为yyyy-MM-dd HH:mm:ss">
</div>
<button type="submit" class="btn btn-primary">提交</button>
</form>
在添加用户时,我们将页面传递来的createTime参数使用@DateTimeFormat注解,转换成了Date类型。