如何删除 Java Instant 数据类型中的小数点
How to remove decimal point in an Java Instant data type
每当我尝试删除 java 中 Instant 数据类型的小数点时都会出现此错误。
! java.util.IllegalFormatConversionException: M != java.time.Instant
这是我尝试用于转换的代码行。我正在使用 String.format
subCategory.setSla(Instant.parse(String.format("%tM", Instant.ofEpochSecond(dto.getSla().atZone(ZoneOffset.UTC).getMinute()))));
没有字符串格式,我得到类似 24.00000
不想看到24后的小数点,你觉得怎么处理最好?
我的 dto 有类似的东西
private Instant sla;
我的 dto 正在返回一个 Instant
,我非常确定。我只想显示分钟并通过电子邮件将分钟发送给用户。我不想要带小数点的默认表示。
tl;博士
instant // Represents a moment as seen in UTC, an offset of zero hours-minutes-seconds.
.atOffset( ZoneOffset.UTC ) // Returns an `OffsetDateTime` object, converting from `Instant`.
.getMinute() // Returns an `int` primitive value.
详情
您将 date-time 对象与文本混为一谈。 类如Instant
不是文字。这些 classes 使用它们自己内部定义的 date-time 值表示。该表示 不是 纯文本。
显然您只想从 Instant
对象中提取小时中的分钟。 class是java.time中的基本building-blockclass。所以转换为更灵活的 OffsetDateTime
class.
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
提取小时的分钟数。
int minute = odt.getMinute() ;
示例:
Instant
.parse( "2023-01-23T19:42:07.123456789Z" )
.atOffset( ZoneOffset.UTC )
.getMinute()
42
每当我尝试删除 java 中 Instant 数据类型的小数点时都会出现此错误。
! java.util.IllegalFormatConversionException: M != java.time.Instant
这是我尝试用于转换的代码行。我正在使用 String.format
subCategory.setSla(Instant.parse(String.format("%tM", Instant.ofEpochSecond(dto.getSla().atZone(ZoneOffset.UTC).getMinute()))));
没有字符串格式,我得到类似 24.00000
不想看到24后的小数点,你觉得怎么处理最好?
我的 dto 有类似的东西
private Instant sla;
我的 dto 正在返回一个 Instant
,我非常确定。我只想显示分钟并通过电子邮件将分钟发送给用户。我不想要带小数点的默认表示。
tl;博士
instant // Represents a moment as seen in UTC, an offset of zero hours-minutes-seconds.
.atOffset( ZoneOffset.UTC ) // Returns an `OffsetDateTime` object, converting from `Instant`.
.getMinute() // Returns an `int` primitive value.
详情
您将 date-time 对象与文本混为一谈。 类如Instant
不是文字。这些 classes 使用它们自己内部定义的 date-time 值表示。该表示 不是 纯文本。
显然您只想从 Instant
对象中提取小时中的分钟。 class是java.time中的基本building-blockclass。所以转换为更灵活的 OffsetDateTime
class.
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
提取小时的分钟数。
int minute = odt.getMinute() ;
示例:
Instant
.parse( "2023-01-23T19:42:07.123456789Z" )
.atOffset( ZoneOffset.UTC )
.getMinute()
42