gpt4 book ai didi

java - 如何以与记录区域格式相同的格式获取显示时间?

转载 作者:行者123 更新时间:2023-12-02 01:42:31 25 4
gpt4 key购买 nike

我有预计存储时区信息的日期格式:

SimpleDateFormat dateWithZoneFormat
= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");

日期值示例,

2019-01-18T07:00:00.000+0530

上述日期的区域常量是亚洲/加尔各答 (+0530), Reference.

现在,在位于不同时区的计算机上显示时,我希望上面的日期显示上面日期中记录的同一区域的时间,即+530,这不是可以根据用户国家/地区更改的恒定区域。

我的java显示代码如下:

SimpleDateFormat dateWithZoneFormat
= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
SimpleDateFormat displayDateFormat
= new SimpleDateFormat("MM/dd/yyyy hh:mm a");
Date date = DateUtils.getZoneDate("2019-01-18T07:00:00.000+0530");
String displayDate = DateUtils.displayDateFormat.format(date);
displayTag = displayDate + " " + displayTag;

上述代码的问题是,它在创建显示时间时选择运行它的计算机的默认区域。

简单来说,如果记录在+0530区的时间在显示时应该显示+0530区的显示时间,如果记录在+0100区的时间则应该显示在同一区的时间。

如何以记录时的相同时区格式显示上述日期,而不是显示的日期(即不在机器默认时区中)。

有什么方法可以提取上述日期字符串中的区域信息吗?

最佳答案

java.time 的 OffsetDateTime

    DateTimeFormatter recordedFormatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSSXX");
DateTimeFormatter displayFormatter
= DateTimeFormatter.ofPattern("MM/dd/yyyy hh:mm a", Locale.ENGLISH);

OffsetDateTime dateTime = OffsetDateTime.parse("2019-01-18T07:00:00.000+0530", recordedFormatter);
String displayDateTime = dateTime.format(displayFormatter);
System.out.println(displayDateTime);

此代码片段输出:

01/18/2019 07:00 AM

保留记录字符串的时间。时间以相同的 UTC 偏移量显示。

与老式的 Date 相反,OffsetDateTime 具有 UTC 偏移量,因此在解析和格式化时保持同一时间。

用法:亚洲/加尔各答是一个时区+05:30 是一个偏移量,它们不一样。例如,亚洲/科伦坡当前具有相同的偏移量,但仍被视为不同的时区。

链接: Oracle tutorial: Date Time解释如何使用java.time

关于java - 如何以与记录区域格式相同的格式获取显示时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54251224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com