Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的GregorianCalendar(添加Calendar.HOUR OF_DAY与Calendar.HOUR)_Java_Android_Calendar - Fatal编程技术网

Java Android中的GregorianCalendar(添加Calendar.HOUR OF_DAY与Calendar.HOUR)

Java Android中的GregorianCalendar(添加Calendar.HOUR OF_DAY与Calendar.HOUR),java,android,calendar,Java,Android,Calendar,要在当前时间的基础上增加一小时,我可以使用这个吗 Calendar mcalendar = new GregorianCalendar(); mcalendar.add(Calendar.HOUR_OF_DAY, 1); //I plan to use 24 hours format 我看到许多例子使用了: Calendar mcalendar = Calendar.getInstance(); mcalendar.add(Calendar.HOUR, 1); GreogorianCalen

要在当前时间的基础上增加一小时,我可以使用这个吗

Calendar mcalendar = new GregorianCalendar();
mcalendar.add(Calendar.HOUR_OF_DAY, 1); //I plan to use 24 hours format
我看到许多例子使用了:

Calendar mcalendar = Calendar.getInstance();
mcalendar.add(Calendar.HOUR, 1);
GreogorianCalendar
是抽象类
Calendar
的一个子类。因此,您在这里所做的是将GregorianCalendar的实例引用到日历,因此
Calendar
中的所有抽象方法都将遵循
GregorianCalendar

但既然你的目的是增加时间

您可以继续使用
Calendar mcalendar=Calendar.getInstance()语言环境
检索当前的实例时

但是,如果要更改
区域设置
,请将参数传递到
getInstance()
方法中,然后将为您生成指定的
区域设置
的实例

参考:

如果您想使用小时:

请执行以下操作:

不要使用
HOUR
变量,因为这仅适用于12小时时间。使用
Calendar.HOUR Of_DAY
处理24小时计时

GreogorianCalendar
是抽象类
Calendar
的一个子类。因此,您在这里所做的是将GregorianCalendar的实例引用到日历,因此
Calendar
中的所有抽象方法都将遵循
GregorianCalendar

但既然你的目的是增加时间

您可以继续使用
Calendar mcalendar=Calendar.getInstance()语言环境
检索当前的实例时

但是,如果要更改
区域设置
,请将参数传递到
getInstance()
方法中,然后将为您生成指定的
区域设置
的实例

参考:

如果您想使用小时:

请执行以下操作:

不要使用
HOUR
变量,因为这仅适用于12小时时间。使用日历小时处理24小时计时。

tl;博士
Duration Duration=Duration.of小时(1);
ZoneId ZoneId=美国/蒙特利尔地区;
ZonedDateTime zdt=ZonedDateTime.now(zoneId).plus(持续时间);
DateTimeFormatter f=DateTimeFormatter
.OfCalizedDateTime(FormatStyle.FULL)
.withLocale(Locale.GERMANY);
字符串输出=zdt.格式(f);
桑塔格,27岁。Dezember 2020 um 22:58:52北美标准

java.time 现代解决方案使用java.time类。切勿使用
日历
格里高利安日历

UTC 捕获UTC中显示的当前时刻。使用

定义与时间线无关的时间跨度

Duration duration = Duration.ofHours( 1 ) ;
增加

Instant instantHourLater = instant.plus( duration ) ;
分区 你可能想通过一个特定地区的人们使用的挂钟看到一天中的时间和那个时刻的日期。应用时区(
ZoneId
)以获取
zoneDateTime
对象。同一时刻,时间线上的同一点,不同的挂钟时间

ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = instant.atZone( zoneId ) ;
或者,跳过
瞬间
持续时间

ZonedDateTime zdt = ZonedDateTime.now( zoneId ).plusHours( 1 ) ;
正文 你说:

我计划使用24小时制

诸如
Instant
OffsetDateTime
zoneDateTime
之类的类表示时间线上的一个时刻、一个点。它们与文本无关。它们没有“格式”。它们可以解析表示某个时刻的文本,并生成表示某个时刻的文本。但在内部,他们有自己的表达方式,没有任何格式化文本

若要以特定格式生成文本,请将类与和一起使用。这已经在堆栈溢出上讨论过很多次了。因此,搜索以了解更多信息

DateTimeFormatter f = DateTimeFormatter
                      .ofLocalizedDateTime( FormatStyle.FULL )
                      .withLocale( Locale.CANADA_FRENCH ) 
;
String output = zdt.format( f ) ;
看这个

输出:迪曼奇27 décembre 2020年22小时51分57秒


关于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(tl;dr
      Duration Duration=Duration.of小时(1);
      ZoneId ZoneId=美国/蒙特利尔地区;
      ZonedDateTime zdt=ZonedDateTime.now(zoneId).plus(持续时间);
      DateTimeFormatter f=DateTimeFormatter
      .OfCalizedDateTime(FormatStyle.FULL)
      .withLocale(Locale.GERMANY);
      字符串输出=zdt.格式(f);
      
      Sonntag,27.Dezember 2020 um 22:58:52北美标准

      java.time 现代解决方案使用java.time类。永远不要使用
      Calendar
      gregorianalendar

      UTC 捕获UTC中显示的当前时刻。使用

      定义与时间线无关的时间跨度

      Duration duration = Duration.ofHours( 1 ) ;
      
      增加

      Instant instantHourLater = instant.plus( duration ) ;
      
      分区 您可能希望通过特定地区的人使用的挂钟时间查看一天中的时间和该时刻的日期。应用时区(
      ZoneId
      )以获取
      zoneDateTime
      对象。同一时刻,时间线上的同一点,不同的挂钟时间

      ZoneId zoneId = ZoneId.of( "America/Montreal" ) ;
      ZonedDateTime zdt = instant.atZone( zoneId ) ;
      
      或者,跳过
      实例