gpt4 book ai didi

java - 如何使用 Joda-Time 将 1 年转换为秒?

转载 作者:行者123 更新时间:2023-11-30 06:12:07 26 4
gpt4 key购买 nike

YearsJoda-Time 中上课api,但它没有任何获取秒数或 milliseconds 的方法(或将其转换为 Duration 的任何方法)。还有一个 DateTimeConstants具有有用的常量,但同样没有任何 SECONDS_PER_YEAR 常量。

那么如何使用 joda time 将 1 年转换为秒?

最佳答案

一年中的秒数没有常数,因为您必须首先确定一年中的天数常数。使用 TimeUnit (Java 5+) 你可以使用

System.out.println(TimeUnit.SECONDS.convert(365, TimeUnit.DAYS));
System.out.println(TimeUnit.SECONDS.convert(365, TimeUnit.DAYS)
+ TimeUnit.SECONDS.convert(6, TimeUnit.HOURS));
System.out.println(TimeUnit.SECONDS.convert(366, TimeUnit.DAYS));

获取 365 天(典型年份)、365.25 天("spherical" 年)和 366 天(leap year )的秒数。我明白了

31536000
31557600
31622400

这可以概括为一个枚举,比如

public enum YEAR {
TYPICAL(TimeUnit.SECONDS.convert(365, TimeUnit.DAYS)), //
SPHERICAL(TimeUnit.SECONDS.convert(365, TimeUnit.DAYS) //
+ TimeUnit.SECONDS.convert(6, TimeUnit.HOURS)), //
LEAP(TimeUnit.SECONDS.convert(366, TimeUnit.DAYS));
YEAR(long seconds) {
this.seconds = seconds;
}

long seconds;

public long getSeconds() {
return seconds;
}

public static YEAR forYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return LEAP;
}
return TYPICAL;
}
}

并对其进行测试(并重现相同的输出)

public static void main(String[] args) {
int year = 2016;
System.out.println(YEAR.forYear(year).getSeconds());
System.out.println(YEAR.SPHERICAL.getSeconds());
System.out.println(YEAR.forYear(year + 1).getSeconds());
}

但是,正如评论中所指出的,这并没有说明 leap seconds .

关于java - 如何使用 Joda-Time 将 1 年转换为秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33294084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com