Java.util.Date
startDate : 2020-07-13 09:00:00.0
// JSON 响应
"startDate" : 1594611000000
我想以 JSON 显示为 2020-07-13 09:00:00.0
我建议您从过时且容易出错的
java.util
日期时间 API 切换到 现代日期-时间 API 并使用 DateTimeFormater#ofPattern
格式化给定的日期时间,如下所示:
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
// Define format
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.S");
// Get Instant from the time-stamp of 1594611000000
Instant instant = Instant.ofEpochMilli(1594611000000L);
// Get OffsetDateTime from instant
OffsetDateTime odt = instant.atOffset(ZoneOffset.ofHoursMinutes(5, 30));
// Get LocalDateTime from odt
LocalDateTime ldt = odt.toLocalDateTime();
// Get string in the defined format
String dateTimeStr = formatter.format(ldt);
// Display the formatted ldt
System.out.println(dateTimeStr);
}
}
输出:
2020-07-13 09:00:00.0
注意:
LocalDateTime
从中删除时区和时区偏移的重要信息。根据您的要求,从下面给出的列表中选择正确的日期时间对象:
如果用于序列化/反序列化的 POJO 对象有一个 Date 字段,如下所示,则应将其通知用于序列化/反序列化的库(例如 Jackson )。
class JsonTest{
private Date date;
}
执行序列化/反序列化时,数据格式的详细信息由Serializer/DeSerializer设置。使用 Jackson 的示例反序列化代码(使用 com.fasterxml.jackson.core)可以是
public static void main(String[] args) throws JsonProcessingException, ParseException
{
//2020-07-13 09:00:00.0
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
String dateString = format.format( new Date() );
Date date = format.parse ( "2020-07-13 09:00:00.0" );
JsonTest jsonTest = new JsonTest();
jsonTest.setDate(date);
ObjectMapper mapper = new ObjectMapper();
//mapper should know that the specific format is needed while conversion
mapper.setDateFormat(format);
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
System.out.println(mapper.writeValueAsString(jsonTest));
}
输出将打印为
{"date":"2020-07-13 09:00:00.0"}
据我从您的问题中了解到,因此希望在响应正文中获取特定格式的日期。
在java中,您可以在DTO类中的字段上方添加@JsonFormat注释。 根据您的要求更改图案格式。
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date startDate;
您提到您的变量 startDate 是日期类型,现在我不知道您使用的是什么语言,但我可以尝试对您需要做什么进行有根据的猜测:
格式化日期类型以获得字符串类型,并将该字符串放入 JSON 中。作为一个字符串而不是时间戳的解释,不应该被转换。