根据时区将日历转换为日期

cotxawn7  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(368)

此问题已在此处找到答案

java中的时区问题(3个答案)
java中的gregoriancalendar类(3个答案)
两个月前关门了。
我写了一个代码,日历是根据时区准备的。

Calendar toDayDateCalendar = Calendar.getInstance(TimeZone.getTimeZone(appTheme.getTimezoneId()));

Date formattedSelectedDate = toDayDateCalendar.getTime();

但是我要根据系统获取“formattedselecteddate”。我想根据时区获取日期。我如何才能获取它。

piah890a

piah890a1#

(a) a java.util.Date 对象,不管名称如何,都表示utc中的日期和时间。A. Date 没有时区。事实上,它确实存在,但对于我们这里的目的来说,这是无关紧要的。
所以你期望“我想根据时区来确定日期”是没有意义的。
(b) 您使用的是几年前被现代java.time类取代的糟糕的日期时间类。从不使用 Calendar ,切勿使用 Date ,切勿使用 TimeZone .
获取在特定时区中看到的当前时刻。

ZoneId zoneId = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime nowTunis = ZonedDateTime.now( zoneId ) ;

如果您只想要日期,没有一天中的时间和时区,请使用 LocalDate .

ZoneId zoneId = ZoneId.of( "Asia/Tokyo" ) ;
LocalDate todayTokyo = LocalDate.now( zoneId ) ;

关于java.time

java.time框架内置于Java8及更高版本中。这些类取代了旧的遗留日期时间类,如 java.util.Date , Calendar , & SimpleDateFormat .
要了解更多信息,请参阅oracle教程。并搜索堆栈溢出以获得许多示例和解释。规范是JSR310。
joda time项目现在处于维护模式,建议迁移到java.time类。
您可以直接与数据库交换java.time对象。使用符合jdbc 4.2或更高版本的jdbc驱动程序。不需要字符串,也不需要 java.sql.* 上课。Hibernate5和JPA2.2支持java.time。
从哪里获得java.time类?
JavaSE8、JavaSE9、JavaSE10、JavaSE11和更高版本—标准JavaAPI的一部分,带有捆绑实现。
Java9带来了一些小功能和修复。
JavaSE6和JavaSE7
大部分java.time功能都是通过三个后端口向后移植到Java6和Java7。
安卓
android(26+)的更高版本捆绑了java.time类的实现。
对于早期的android(<26),api去糖过程带来了最初未内置到android中的java.time功能的子集。
如果desugaring不能提供您需要的功能,threetenabp项目会将threeten backport(如上所述)应用于android。了解如何使用threetenabp…。

相关问题