当前位置: 首页 > 知识库问答 >
问题:

LocalTime的@JSONFormat模式

须鸿祯
2023-03-14
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss'Z'")
private Date completionDate;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
@JsonDeserialize(using = LocalDateDeserializer.class)
@JsonSerialize(using = LocalDateSerializer.class)
private LocalDate date;

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = ???)
@JsonDeserialize(using = LocalTimeDeserializer.class)
@JsonSerialize(using = LocalTimeSerializer.class)
private LocalTime time;

我知道我该在约会部分用什么了。但是时间部分需要什么模式呢?“hh:mm:ss'z'”

共有1个答案

祖利
2023-03-14

java.utilDate-Time API和它们的格式化API,SimpleDateFormat已经过时并且容易出错。建议完全停止使用它们,并切换到现代日期时间API*

不要将传统的日期-时间API和现代的日期-时间API混合在一起:在您的代码中,您将容易出错的传统日期-时间API和现代的日期-时间API混合在一起,这将使您的代码变得不必要地复杂和容易出错。我建议您将CompletionDate声明为ZonedDateTime,您可以从中检索日期和时间部分,如下例所示:

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        ZonedDateTime completionDate = ZonedDateTime.now(ZoneId.of("Etc/UTC"));
        LocalDate date = completionDate.toLocalDate();
        LocalTime time = completionDate.toLocalTime();
        System.out.println(completionDate);
        System.out.println(date);
        System.out.println(time);

        // Some examples of custom formats
        DateTimeFormatter dtfTime = DateTimeFormatter.ofPattern("HH:mm:ss", Locale.ENGLISH);
        System.out.println(time.format(dtfTime));

        DateTimeFormatter dtfDtTz = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssXXX", Locale.ENGLISH);
        System.out.println(completionDate.format(dtfDtTz));
    }
}

产出:

2021-10-06T08:56:37.131679Z[Etc/UTC]
2021-10-06
08:56:37.131679
08:56:37
2021-10-06T08:56:37Z
 类似资料:
  • 如何从字符串解析LocalTime,例如mm:ss中的“10:38.0”。什么格式?我很难改变格式。 出错 java类型的ISO。时间总体安排解析的java。时间总体安排DateTimeParseException:无法分析文本“10:38.2”:无法从TemporalAccessor获取本地时间:{MinuteOfHour=10,MicroOfSecond=200000,MilliOfSecon

  • 描述 (Description) 此函数在列表上下文中转换EXPR指定的时间,返回一个九元素数组,其中包含分析当前本地时区的时间。 该数组的元素是 - # 0 1 2 3 4 5 6 7 8 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); 如果

  • localtime(取得当地目前时间和日期) 相关函数 time, asctime, ctime, gmtime 表头文件 #include<time.h> 定义函数 struct tm *localtime(const time_t * timep); 函数说明 localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

  • 该方法用于给出系统中的本地日期和时间。 语法 (Syntax) localtime() 参数 (Parameters) None 返回值 (Return Value) 该方法用于给出系统中的本地日期和时间。 例如 (For example) -module(helloworld). -export([start/0]). start() -> io:fwrite("~p~n",[er

  • localtime 取得当地目前时间和日期 相关函数 time, asctime, ctime, gmtime 表头文件 #include<time.h> 定义函数 struct tm *localtime(const time_t *timep); 函数说明 localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。

  • 函数原型 #include <time.h> struct tm *localtime(const time_t *timep); 描述 将参数中timep代表的秒数转换为结构体tm类型。出现错误时返回NULL。 注意,此时参数timep中的必须是经过time()初始化过的变量。 所以通常的用法是: struct tm* t; time_t currentTime; time(&currentTi