这里是Java前后端时间格式的转化方式的完整攻略。
1. 前言
在Web开发中,时间格式在前后端传输过程中经常出现问题。Java后端通常使用Date或者LocalDateTime类型表示时间,而前端通常使用字符串类型表示时间。在进行前后端数据交互时,需要进行时间格式的转化。下面将介绍Java前后端时间格式的转化方式。
2. 时间格式的表示
在Java中,时间格式的表示可以使用 java.util.Date
或者 java.time.LocalDateTime
类型。在前端中,时间格式的表示通常是字符串类型,例如 "2022-10-01 10:00:00"
。
3. 前后端时间格式的转化
3.1 将 Date 转为字符串
Java中Date类型转为字符串,可以使用 SimpleDateFormat 进行格式化。例如,下面的代码将Date类型的时间转为字符串格式的 "yyyy-MM-dd HH:mm:ss"
。
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);
System.out.println(str); // 输出 "2022-10-01 10:00:00"
3.2 将 LocalDateTime 转为字符串
Java8之后,引入了 java.time 包,提供了 LocalDateTime 类型,是线程安全的。将 LocalDateTime 转为字符串,可以使用 DateTimeFormatter 进行格式化,例如下面的代码将 LocalDateTime 类型的时间转为字符串格式的 "yyyy-MM-dd HH:mm:ss"
。
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String str = dateTime.format(formatter);
System.out.println(str); // 输出 "2022-10-01 10:00:00"
3.3 将字符串转为 Date
将字符串转为 Date 类型,可以使用 SimpleDateFormat 进行格式化,例如下面的代码将字符串格式的 "2022-10-01 10:00:00"
转为 Date 类型。
String str = "2022-10-01 10:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
System.out.println(date.toString()); // 输出 "Sat Oct 01 10:00:00 CST 2022"
3.4 将字符串转为 LocalDateTime
将字符串转为 LocalDateTime 类型,同样可以使用 DateTimeFormatter 进行格式化,例如下面的代码将字符串格式的 "2022-10-01 10:00:00"
转为 LocalDateTime 类型。
String str = "2022-10-01 10:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);
System.out.println(dateTime.toString()); // 输出 "2022-10-01T10:00"
4. 示例
下面两个示例分别演示了将 Date 或者 LocalDateTime 转为字符串和将字符串转为 Date 或者 LocalDateTime 的过程。假设需要将一个 Java 对象(包含时间)转换为 JSON 格式传递给前端,然后前端修改了时间格式后传回给后端,最后将修改后的时间格式更新数据库。
4.1 对时间进行 JSON 序列化和反序列化
假设Java对象为 User
类,其中包含 id
和 createTime
两个字段。现在需要将 createTime
字段转为字符串格式的 "yyyy-MM-dd HH:mm:ss"
。
public class User {
private int id;
private Date createTime;
// getter和setter方法
}
User user = new User();
user.setId(1);
user.setCreateTime(new Date());
ObjectMapper mapper = new ObjectMapper();
// 将Java对象转为JSON字符串
String jsonStr = mapper.writeValueAsString(user);
System.out.println(jsonStr);
// 输出 {"id":1,"createTime":"2022-10-01 10:00:00"}
// 将JSON字符串转为Java对象
User newUser = mapper.readValue(jsonStr, User.class);
System.out.println(newUser.getCreateTime().toString());
// 输出 "Sat Oct 01 10:00:00 CST 2022"
4.2 将前端传回的时间格式更新到数据库
假设前端传回的时间格式是 "2022-10-02 11:00:00"
,需要将其更新到数据库中。
// 将字符串转为 LocalDateTime 类型
String str = "2022-10-02 11:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(str, formatter);
// 将 LocalDateTime 类型转为 Date 类型
ZoneId zone = ZoneId.systemDefault();
Instant instant = dateTime.atZone(zone).toInstant();
Date date = Date.from(instant);
// 将 Date 类型更新到数据库
PreparedStatement pstmt = conn.prepareStatement("UPDATE table_name SET create_time=? WHERE id=?");
pstmt.setTimestamp(1, new java.sql.Timestamp(date.getTime()));
pstmt.setInt(2, 1);
pstmt.executeUpdate();
这就是Java前后端时间格式的转化方式的完整攻略了,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java前后端时间格式的转化方式 - Python技术站