Duration.parse格式说明

Duration.parse格式说明

Duration.parse是Java 8及以上版本中的一个方法,用于将字符串表示的时间段解析为Duration对象。它可以解析符合ISO-8601标准的时间段字符串。

ISO-8601时间段字符串的格式如下:

  • PTnHnMnS:表示n小时n分钟n秒,其中T为时间段分隔符,P为时间段标识符。
  • PTnH:表示n小时。
  • PTnM:表示n分钟。
  • PTnS:表示n秒。

例如,以下是一些合法的ISO-8601时间段字符串:

  • PT2H30M:表示2小时30分钟。
  • PT1H:表示1小时。
  • PT45M:表示45分钟。
  • PT10S:表示10秒。
    在使用Duration.parse方法时,需要注意以下几点:

字符串必须符合ISO-8601时间段字符串的格式,否则将抛出DateTimeParseException异常。
字符串中的字母大小写敏感,必须使用大写的P、T和H/M/S。
Duration对象表示的时间段最大单位为天(24小时),不能表示更长的时间段。

示例代码:

String durationString = "PT2H30M";
Duration duration = Duration.parse(durationString);
System.out.println(duration); // 输出:PT2H30M
System.out.println(duration.toMinutes()); // 输出:150

上述代码将字符串"PT2H30M"解析为一个Duration对象,并输出该对象的字符串表示和总分钟数。

ISO-8601时间段字符串的格式遵循以下规则:

时间段标识符(Period Designator):以字母"P"开头,表示时间段的起始。
时间单位(Time Units):使用大写字母表示时间单位,包括年(Y)、月(M)、周(W)、天(D)、小时(H)、分钟(M)和秒(S)。
时间值(Time Values):在时间单位之前,使用数字表示时间值。
以下是一些常见的ISO-8601时间段字符串的格式示例:

  • P1Y:表示1年的时间段。
  • P2M:表示2个月的时间段。
  • P3W:表示3周的时间段。
  • P4D:表示4天的时间段。
  • PT5H:表示5小时的时间段。
  • PT30M:表示30分钟的时间段。
  • PT20S:表示20秒的时间段。
    可以通过组合不同的时间单位和时间值来表示更复杂的时间段。例如:
    P1Y2M3DT4H5M6S:表示1年2个月3天4小时5分钟6秒的时间段。
    需要注意的是,ISO-8601时间段字符串不包含日期信息,仅表示时间段的持续时间。

Spring Boot 中 Duration的配置方式

在Spring Boot的YAML或Properties配置文件中,可以使用Duration来配置时间段(StringToDurationConverter)。
在YAML配置文件中,可以使用ISO-8601时间段字符串的格式来配置Duration。例如:

myapp:
  duration: PT2H30M

然后,在Spring Boot应用程序的代码中,可以通过@Value注解将配置值注入到Duration类型的属性中。

Spring Boot还支持使用简单模式配置Duration。
在简单模式下,可以使用数字和时间单位的组合来表示Duration。以下是一些示例:

  • myapp.duration=2h30m:表示2小时30分钟的时间段。
  • myapp.duration=1d:表示1天的时间段。
  • myapp.duration=30s:表示30秒的时间段。
    在这种情况下,Spring Boot会自动将配置值解析为Duration对象,并将其注入到相应的属性中。

请注意,简单模式下的时间单位可以是以下几种:

  • ns:纳秒
  • us:微秒
  • ms:毫秒
  • s:秒
  • m:分钟
  • h:小时
  • d:天

关于 spring boot 的 Duration (java.time.Duration) 在yml properties 中的配置方法

你可能感兴趣的:(Java,杂项,java,Duration)