簡體   English   中英

時間戳增加了額外的日子

[英]Timestamp adds extra days

我以毫秒為單位獲取當前時間

(System.currentTimeMillis() / 1000)

我使用它:

foodObj.setValue("expires",(System.currentTimeMillis() / 1000)+ONE_WEEK+"");

並使用靜態整數增加一兩周

public static int TWO_WEEKS = 1209600000;
public static int ONE_WEEK = 604800000;
public static int ONE_DAY = 86400000;

當我稍后嘗試將其轉換為幾天時,我認為應該提前16天或17天(如果將一天中的毫秒數作為一天,則為idk)

//keysValues.get("expires") contains the timestamp
Long exp= Long.parseLong(keysValues.get("expires"));
long days=TimeUnit.MILLISECONDS.toDays(exp)-16;//otherwise this is 23

為什么時間不一致? 是Long還是String轉換的東西?

通過System.currentTimeMillis() / 1000您可以得到 ,而不是毫秒 因此,為了使代碼正常工作,您應該使用適當的常量:

public static final int ONE_DAY = 24 * 60 * 60;   // 86400, not 86.4M
public static final int ONE_WEEK = ONE_DAY * 7;
public static final int TWO_WEEKS = ONE_WEEK * 2;

// ...
long days = TimeUnit.SECONDS.toDays(exp)

或不除以1000。

順便說一句,這不能解決夏令時的更改,但是我認為在這里並不是那么重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM