请读到最后,我会尽量详细解释。
我有一个程序,它只适用于当地人,在一个国家。具体地说,它是针对一个国家的,但也可以用于另一个国家。但是,所有小时、分钟和日期都适用于一个国家/地区。这就是为什么我认为程序应该在那个国家的日期运行,程序的日期应该取自那个国家的实际日期,而不是电话日历上的日期。
用户打开app: App show 21-11月。(在那个国家的日期)电话数据20-11月。(在他的祖国,日期仍然是11月20日)
(无论我的手机日历如何,应用程序都应该显示该国家et的确切日期。)
你还不明白吗?然后留下你的问题作为评论,请帮助。
发布于 2021-11-21 21:37:40
您的问题不清楚,但您似乎希望表示在两个不同时区中查看的单个时刻。
捕获以UTC为单位的当前时刻(偏移为0小时-分钟-秒)。
Instant instant = Instant.now() ;通常,最好使用UTC进行思考、调试、日志记录、存储、数据交换和大多数业务逻辑。调整到一个时区,主要是为了向用户展示,以及根据需要针对特定的业务规则。
调整为一个时区。
ZoneId zEdmonton = ZoneId.of( "America/Edmonton" ) ;
ZonedDateTime zdtEdmonton = instant.atZone( zEdmonton ) ;调整到另一个时区。
ZoneId zTokyo = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime zdtTokyo = instant.atZone( zTokyo ) ;我们的三个对象,Instant和一对ZonedDateTime对象,都代表了时间轴上的同一时刻,同一时间点。
在特定的时刻,东京的日期可能是“明天”,而埃德蒙顿的日期仍然是“昨天”。
发布于 2021-11-21 21:26:35
有很多不同的方法可以获得它,这只是其中的两种:
LocalDateTime.now().atOffset(ZoneOffset.of("-05:00")).toZonedDateTime();
LocalDateTime.now().atZone(ZoneId.of("Asia/Kuala_Lumpur"))https://stackoverflow.com/questions/70058344
复制相似问题