Java 根据时区将日历转换为日期
我写了一个代码,日历是根据时区准备的Java 根据时区将日历转换为日期,java,timezone,Java,Timezone,我写了一个代码,日历是根据时区准备的 Calendar toDayDateCalendar = Calendar.getInstance(TimeZone.getTimeZone(appTheme.getTimezoneId())); Date formattedSelectedDate = toDayDateCalendar.getTime(); 但是我要根据系统获取“formattedSelectedDate”。我想根据时区获取日期。如何获取它。(A)一个java.util.date对
Calendar toDayDateCalendar = Calendar.getInstance(TimeZone.getTimeZone(appTheme.getTimezoneId()));
Date formattedSelectedDate = toDayDateCalendar.getTime();
但是我要根据系统获取“formattedSelectedDate”。我想根据时区获取日期。如何获取它。(A)一个java.util.date
对象,不管名称如何,都表示UTC中的日期和时间。日期
没有时区。事实上,它确实存在,但对于我们这里的目的来说,这是无关紧要的
所以你期望“我想根据时区来确定日期”是没有意义的
(B) 您使用的是几年前被现代java.time类取代的糟糕的日期时间类。切勿使用日历
,切勿使用日期
,切勿使用时区
获取在特定时区中看到的当前时刻
Calendar toDayDateCalendar = Calendar.getInstance(TimeZone.getTimeZone(appTheme.getTimezoneId()));
Date formattedSelectedDate = toDayDateCalendar.getTime();
ZoneId ZoneId=ZoneId.of(“非洲/突尼斯”);
ZonedDateTime Nowtonis=ZonedDateTime.now(zoneId);
如果只需要日期,不需要一天中的某个时间和时区,请使用
LocalDate
ZoneId ZoneId=ZoneId.of(“亚洲/东京”);
localdatetodaytoko=LocalDate.now(zoneId);
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,& 要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是 该项目现已启动,建议迁移到类 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
java.sql.*
类。Hibernate5和JPA2.2支持java.time
从哪里获得java.time类
- 、和更高版本-标准Java API的一部分,带有捆绑实现。
- 带来了一些小功能和修复
- 及
- 大多数java.time功能都在中向后移植到Java6和Java7
-
- Android(26+)的更高版本捆绑了java.time类的实现
- 对于早期的Android((A)
对象,不管名称如何,都表示UTC中的日期和时间。日期没有时区。实际上它有一个很深的时区,但对于我们这里的目的来说,这是不相关的 所以你期望“我想根据时区来确定日期”是没有意义的 (B) 您使用的日期时间类在几年前就被现代的java.time类所取代。永远不要使用java.util.Date
,永远不要使用日历
,永远不要使用日期
获取在特定时区中看到的当前时刻时区
Calendar toDayDateCalendar = Calendar.getInstance(TimeZone.getTimeZone(appTheme.getTimezoneId())); Date formattedSelectedDate = toDayDateCalendar.getTime();
ZoneId ZoneId=ZoneId.of(“非洲/突尼斯”); ZonedDateTime Nowtonis=ZonedDateTime.now(zoneId);
如果只需要日期,不需要一天中的某个时间和时区,请使用LocalDate
ZoneId ZoneId=ZoneId.of(“亚洲/东京”); localdatetodaytoko=LocalDate.now(zoneId);
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,如,& 要了解更多信息,请参阅.和搜索堆栈溢出以获取许多示例和解释。规范为 该项目现已启动,建议迁移到类 您可以直接与数据库交换java.time对象。使用兼容的或更高版本。不需要字符串,也不需要
classes。Hibernate 5和JPA 2.2支持java.time 从哪里获得java.time类java.sql.*
- 、和更高版本-标准Java API的一部分,带有捆绑实现。
- 带来了一些小功能和修复
- 及
- 大多数java.time功能都在中向后移植到Java6和Java7
-
- Android(26+)的更高版本捆绑了java.time类的实现
- 对于早期的Android(如果您只想要日期,没有一天中的时间,也没有时区,请使用LocalDate。您说的“没有时区”是什么意思?@user3692033 a
只有一年、一个月和一个月中的一天。但是没有时区。例如,“2021年1月23日”,“2021年1月23日”LocalDate
。我们不知道这是否意味着日本东京的23日或美国俄亥俄州托莱多的23日——这两个日期发生在非常不同的时间,相差几个小时。在任何给定的时刻,全球各地的日期因时区而异。日本的一天开始和结束时间比美国大陆早得多。此外,一天的长度也可能不同如果我们考虑时区,因为夏时制(DST)等异常情况。我们可以为LocalDate设置不同的时区吗?不,@user3692033,LocalDate.of(2021年1月23日)
没有时区,所以这没有意义。你为什么要这样做?问,因为肯定有一种方法可以通过java.time实现你的最终目标。如果你只想要日期,没有一天中的某个时间,也没有时区,请使用LocalDate.What的意思是“没有时区”。@user3692033 aLocalDate
只有一年、一个月和一个月中的一天。但是没有时区。例如,LocalDate
LocalDate.of(2021年1月23日),
。我们不知道这是否意味着日本东京的23日或美国俄亥俄州托莱多的23日——这两个日期发生在非常不同的时间,相差几个小时。在任何给定的时刻,全球各地的日期因时区而异。日本的一天开始和结束时间比美国大陆早得多。此外,一天的长度也可能不同如果我们考虑时区,因为夏令时(DST)等异常情况。我们可以将不同的时区设置为LocalDate吗?不,@user3692033,LocalDate.of(2021年1月23日)
没有时区,因此不会使seLocalDate
- 、和更高版本-标准Java API的一部分,带有捆绑实现。