2016-05-09 57 views
2

我不想在我的代碼中編寫24 * 60 * 60 * 1000,而是使用更易讀的靜態變量DAYJava中的全局變量是否有一天的長度?

我知道我可以自己寫

private static final long DAY = 24*60*60*1000; 

定義變量然而,這在我看來就像一個基本功能。標準庫中是否覆蓋了它?

+6

你知道一天的時間不是嚴格固定的嗎? – Tunaki

+0

@Tunaki:是的,但對我的用例來說,偏差並不重要。如果Java有一個實際上可以提供特定日期的內置函數,我也會很高興知道它。 – Christian

+1

JDK具有日期和時間功能(特別是對於Java 8),可以更好地處理事情。你有什麼不是基本的,這是不好的。 – Kayaman

回答

3

你可以試試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納秒。

返回:持續時間的長度的整秒部分, 正或負

0

在爪哇8.一種可能性是java.time.Duration.ofDays(1).toMillis()

0

最簡單的解決方案是創建變量,如代碼示例中所示。沒有必要導入任何東西。

0

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總是返回,所以如果實際結果是不是整數,則會被截斷。