可以在java中使用String数据类型作为时间戳吗?
我无法决定使用哪种数据类型来存储日期。我认为使用Date类型会让代码更容易被后端处理,因为可以使用的函数很多。但是当它用于响应 API 时我遇到了麻烦。数据类型 Date 的每个属性都将返回一个时间戳形式的值。当然,这需要前端开发人员努力将其转换为实际日期。
我已经尝试了一些来自知名供应商的 Rest API,然后我发现他们使用 String 数据类型来处理他们的 Rest API 请求/响应。使用 String 数据类型是否适合用于日期和时间?
回答
REST 没有推荐的日期格式,您应该选择最适合您的最终用户和您的系统的日期格式。
通常,人们更喜欢对文本中的日期时间值使用ISO 8601标准。该java.time类解析/生成文本时使用ISO 8601种格式默认。
Internet 上的 RFC 3339 日期和时间是要查看的文档,它说:
用于 Internet 协议的日期和时间格式,该协议是 ISO 8601 标准的配置文件,用于使用公历表示日期和时间。
在您的情况下,您将 epoch 用于日期,该日期非常好且易于使用 Java 库转换为实际的人类可读日期。
一个简单的解决方案是:
LocalDate ld = Instant.ofEpochMilli(epoch)
.atZone(ZoneId.systemDefault()).toLocalDate();