【发布时间】:2021-08-05 10:05:18
【问题描述】:
我想在日期格式进入数据库之前更改它。
我有一个日历。我正在以dd-MM-yyyy 格式从前端发送日期。
当我以这种格式发送时:yyyy-MM-dd 一切正常。但我需要dd-MM-yyyy
我正在使用 PostgreSQL,并且我有一个属性可以用时区格式将日期存储在时间戳中
例如:我在 DB 中的日期 2021-06-11 12:58:44.000000 +00:00
我的休息控制器
@PutMapping("/edit")
public void editTime(@RequestBody UserDto userDto) {
//userDto.getTime() - has this format dd-MM-yyyy
// I understand that i need to change format here. But i don't know how
LocalDate date = LocalDate.parse (userDto.getTime());
Instant currentTime = date.atStartOfDay(ZoneId.of("UTC")).toInstant();
userService.update(userDto.getId(),currentTime);
}
服务方式
public interface UserService {
User update(String Id, Instant time);
}
【问题讨论】:
-
您到底在哪里使用
String格式为dd-MM-yyyy?我看不到任何String...您正在将Instant传递给您的userService...这一切都非常混乱。 -
在我的例子中 userDto.getTime() 是一个字符串
-
那你为什么打电话给
userDto.getTime()?你能打电话给String吗?如果UserDto的属性time是String,则将其设置器与java.time.format.DateTimeFormatter一起使用:userDto.setTime(date.format(DateTimeFormatter.ofPattern("dd-MM-uuuu"))(是的,uuuu而不是yyyy)。 -
另一种解决方案是使用ISO 8601 format在前端和服务器之间发送,所以
yyyy-MM-dd,然后在前端转换成用户喜欢的格式。跨度>
标签: java postgresql datetime