我不想在我的代碼中編寫24 * 60 * 60 * 1000
,而是使用更易讀的靜態變量DAY
。Java中的全局變量是否有一天的長度?
我知道我可以自己寫
private static final long DAY = 24*60*60*1000;
定義變量然而,這在我看來就像一個基本功能。標準庫中是否覆蓋了它?
我不想在我的代碼中編寫24 * 60 * 60 * 1000
,而是使用更易讀的靜態變量DAY
。Java中的全局變量是否有一天的長度?
我知道我可以自己寫
private static final long DAY = 24*60*60*1000;
定義變量然而,這在我看來就像一個基本功能。標準庫中是否覆蓋了它?
你可以試試Java 8 java.time.Duration.ofDays(1).getSeconds()
中java.time
包的Duration API。
只是存儲在一個公共靜態字段:
public static final long SECONDS_IN_DAY = Duration.ofDays(1).getSeconds()
你感興趣的方法將在ofDays(long)
method:
獲得持續 代表了一些標準的24小時的日子。秒爲 根據一天的標準定義計算,其中每天 爲86400秒,這意味着每天24小時。第二個 字段中的納秒被設置爲零。
參數:天 - 天,正或負
返回的數量:一個 時間,不爲空
拋出:ArithmeticException - 如果輸入天 超過期限
後續的容量在相同持續時間API上調用getSeconds()
method:
獲取此持續時間內的秒數。使用兩個字段(秒和納秒)存儲持續時間的長度。 納秒部分是一個從0到999,999,999的值,即以秒爲單位的長度調整。總持續時間由調用此方法的 和getNano()定義。
A持續時間表示 時間線上兩點之間的定向距離。負時間由秒部分的負號 表示。 -1納秒的持續時間被存儲爲-1秒 加999,999,999納秒。
返回:持續時間的長度的整秒部分, 正或負
在爪哇8.一種可能性是java.time.Duration.ofDays(1).toMillis()
。
最簡單的解決方案是創建變量,如代碼示例中所示。沒有必要導入任何東西。
IMO,你根本不需要這樣的常量。自JDK 1起可用的TimeUnit
。五是持續時間轉換時間單位之間,像非常有用:
long millis = TimeUnit.DAYS.toMillis(days);
long seconds = TimeUnit.HOURS.toSeconds(hours);
// or, if you still need a constant
static final long DAY = TimeUnit.DAYS.toMillis(1);
唯一的缺點是,long
總是返回,所以如果實際結果是不是整數,則會被截斷。
你知道一天的時間不是嚴格固定的嗎? – Tunaki
@Tunaki:是的,但對我的用例來說,偏差並不重要。如果Java有一個實際上可以提供特定日期的內置函數,我也會很高興知道它。 – Christian
JDK具有日期和時間功能(特別是對於Java 8),可以更好地處理事情。你有什麼不是基本的,這是不好的。 – Kayaman