提问人:Thilakraj 提问时间:5/13/2023 更新时间:5/13/2023 访问量:59
如果存在 Zone,则显示带有附加 zoneOffset 值的 DateTime
Display DateTime with additional zoneOffset value if Zone is present
问:
在以特定格式显示日期时间时,是否可以将偏移值添加到小时和日期
例:
假设日期时间存储在数据库中没有任何时区。
是否可以以特定格式(考虑 PST)显示为5/12/2023 23:18 PM
5/12/2023 10:18 AM
尝试了以下方法
DateTimeFormatter COMMENT_DATE_TIME_FORMATTER_ZONE = DateTimeFormatter.ofPattern("M/d/y hh:mm a zzz");
ZonedDateTime zdt = ZonedDateTime.of(date, ZoneId.of("America/Los_Angeles"));
String zonfs = zdt.format(Constants.COMMENT_DATE_TIME_FORMATTER_ZONE); //5/12/2023 06:50 PM PDT
DateTimeFormatter COMMENT_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("M/d/y hh:mm a"); //5/12/2023 06:50 PM
SimpleDateFormat sdf = new SimpleDateFormat("M/d/y hh:mm a");
String sdfd =sdf.format(GregorianCalendar.from(zdt).getTime()); //5/13/2023 07:20 AM here its increasing the day by 1
答:
2赞
Misha Zaslavsky
5/13/2023
#1
是的,这是可能的,试试这种方式:
LocalDateTime dateTime = LocalDateTime.of(2023, 5, 12, 23, 18);
Instant instant = dateTime.toInstant(ZoneOffset.UTC);
ZoneId pstZone = ZoneId.of("America/Los_Angeles");
ZonedDateTime pstDateTime = instant.atZone(pstZone);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("M/d/y hh:mm a");
String formattedDateTime = pstDateTime.format(formatter);
评论
2赞
Anonymous
5/13/2023
假设数据库使用 UTC(通常建议使用 UTC),这是正确的。
评论
SimpleDateFormat
DateTimeFormatter
GregorianCalendar
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITHOUT TIME ZONE
5/12/2023 23:18 PM
奇怪。。。为什么选择???PM