如何使 LocalTime 实例变量根据我的特定格式接受 json 数据?
Posted
技术标签:
【中文标题】如何使 LocalTime 实例变量根据我的特定格式接受 json 数据?【英文标题】:How can i make LocalTime instance variable accept json data based on my specific format? 【发布时间】:2022-01-16 05:25:13 【问题描述】:我遇到了一个问题,我基本上是从 API 获取数据作为 Json 对象,
Json 对象中的字段time
设置为如下格式:HH:mm
我在填写 LocalTime 对象时遇到问题,因为它的默认格式看起来像这样 23:37:48.120473200
(LocalTime 是我的 Message
类中的一个实例变量)
我该如何解决这个问题?
消息类
public class Message
private LocalDate date;
private LocalTime time;
private String message;
private String messageId;
public Message(LocalDate date, LocalTime time, String message, String messageId)
this.date = date;
this.time = time;
this.message = message;
this.messageId = messageId;
@Override
public String toString()
return "Message" +
"date='" + date + '\'' +
", time='" + time + '\'' +
", message='" + message + '\'' +
", messageId='" + messageId + '\'' +
'';
public String getMessageId()
return messageId;
public void setMessageId(String messageId)
this.messageId = messageId;
public LocalDate getDate()
return date;
public void setDate(LocalDate date)
this.date = date;
public LocalTime getTime()
return time;
public void setTime(LocalTime time)
this.time = time;
public String getMessage()
return message;
public void setMessage(String message)
this.message = message;
【问题讨论】:
您确定收到的数据格式是hh:mm
吗?这是一个不完整的模式,因为hh
是 12 小时格式的一天中的几个小时,但是如果没有 AM/PM,您将无法判断正确的时间。但是,您可以解析格式为HH:mm
的String
(HH
:24 小时格式的小时数),如LocalTime.parse(input, DateTimeFormatter.ofPattern("HH:mm")
。
@deHaar 对不起,我的错误是 HH:mm,我收到的数据格式是 hh:mm,我 100% 确定。当我使用邮递员时,我看到类似 "time":"03:23"
的内容,但时间当然是字符串,所以 idk。
您必须使用DateTimeFormatter
指定输入格式,就是这样。 LocalTime.parse(String, DateTimeFormatter)
方法将用 0 填充剩余的单元。
但是我应该在哪里添加它?我从firebase api实时数据库获取数据,我无法填写它,因为我尝试它的那一刻给了我一个错误,说列表为空,这意味着填充消息对象时出错(可能由不正确的格式引起)。我应该在哪里添加这个LocalTime.parse(String, DateTimeFormatter)
?
【参考方案1】:
tl;博士
LocalTime.parse( "03:23" )
详情
格式为 24 小时制小时格式的文本,后跟一个冒号和分钟,填充零,符合文本日期时间格式的 ISO 8601 标准。
java.time 类在解析此类文本时默认使用 ISO 8601 格式。所以不需要指定格式模式。
String input = "03:23" ;
LocalTime lt = LocalTime.parse( input ) ;
如果您使用框架来解析 JSON,您应该能够要求框架为您执行此解析。主要的 JSON 框架已更新以利用 java.time 类。
【讨论】:
以上是关于如何使 LocalTime 实例变量根据我的特定格式接受 json 数据?的主要内容,如果未能解决你的问题,请参考以下文章