首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UTC与EST时区(UI后端)

UTC与EST时区(UI后端)
EN

Stack Overflow用户
提问于 2022-11-06 15:40:46
回答 1查看 57关注 0票数 -1

我有一个应用程序,所有后端组件都遵循EST(美国/纽约)的特定流,我们需要捕获并将创建日期和时间从UI传递到后端。是否有任何预定义的标准,其中用户界面应该只传递日期在UTC?用户界面不能太跟随和传递在EST(美国/纽约)相当于它的日期和时间。

用户界面发送创建日期为- "2022-11-04T15:07:18.799Z“,但在EST时区,时间是"11:04.19”AM。

请注意

  1. 我们的用户群遍布整个美国,因此它可能会落入不同的时区,但如果后端的话,它只会跟随(美国/纽约)
  2. 后端和UI必须始终在EST时区显示/处理这些时间,因此无论用户在美国的位置如何,我们总是在EST(美国/纽约)中向用户显示日期和时间。那么,现在当用户界面需要通过创建时间时,为什么UI不能传递它(美国/纽约)?
EN

回答 1

Stack Overflow用户

发布于 2022-11-06 17:40:17

tl;dr

我建议你不要盯着纽约时间。将数据保存在UTC (Instant)中。

代码语言:javascript
复制
Instant.parse ( "2022-11-04T15:07:18.799Z" )

仅将时区应用于表示以及特定业务逻辑(ZonedDateTime)所需的位置。

代码语言:javascript
复制
instant.atZone( zoneId )

详细信息

应该只在协调世界时传递日期。

使用java.time.Instant类来表示UTC中的某个时刻。也就是说,与协调世界时的零小时-分-秒相抵的时刻。

代码语言:javascript
复制
Instant instant = Instant.now() ;  // Always in UTC. 

示例文本末尾的Z表示与协调世界时的零小时-分钟-秒的偏移量。来自航空和军事公约,标准化的ISO 8601

代码语言:javascript
复制
Instant instant = Instant.parse ( "2022-11-04T15:07:18.799Z" ) ;

您会发现,如果只使用UTC记录、调试、数据存储、数据交换和大多数业务逻辑,则日期时间处理更容易。

EST(美国/纽约)对应的日期和时间

应用ZoneId来获得ZonedDateTime

代码语言:javascript
复制
ZoneId z = ZoneId.of( "America/New_York" ) ;
ZonedDateTime zdt = instant.atZone( z ) ; 

一般情况下,最好将分区时间仅用于向用户表示,并用于业务逻辑的特定点。

当心:“EST”不是实时时区America/New_York是。

使用DateTimeFormatter类生成文本。

所有这些都已经在堆栈溢出中被多次覆盖了。寻找更多的知识。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74337332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档