簡體   English   中英

解析的長日期返回無效的年份參數

[英]Parsed long date returns invalid year params

我有一個長號會轉換為日期,

635759785190887215

現在,當我解析此數字時,它給了我一個無效的日期

from logs:
  Wed Aug 02 18:48:07 PST 20148395

年份20148395無效。 可能出什么事了? 該數字是從Web api獲取的,並且根據開發人員的介紹,他通過Microsoft.net“ ticks”創建了這些數字。 我正在嘗試將其轉換為Java日期。 我也嘗試過使用在線長距離轉換器,但我仍然得到相同的結果。

我正在嘗試從現在到很長一段時間的分鍾數之間取得差異635759785190887215

這是我的代碼:

 String dateString = android.text.format.DateFormat.format("MM/dd/yyyy hh:mm:ss a",new Date(pastDateInLong)).toString();
    Log.v(TAG,"PAST DATE: "+dateString);

    Date lastUpdate = new Date(pastDateInLong);
    Date currentDate = new Date();

    Log.v(TAG,"Comparing: Now>"+currentDate.toString()+" to "+lastUpdate.toString()+ "= "+(currentDate.getTime()- lastUpdate.getTime()));
    if (currentDate.getTime() - lastUpdate.getTime() >= 25*60*1000) {
        Log.v(TAG,"more than 25 minutes difference");
    }
    else{
        Log.v(TAG,"not more than 25 minutes difference");
    }

好像您為Date類傳遞了錯誤的參數。 java.util.Date以毫秒為參數。

您可以使用System.currentTimeMillis()獲取當前紀元 (以毫秒為單位)。 盡管如果您創建Date類的對象而未傳遞任何參數,則它將返回當前日期。

System.currentTimeMillis()返回自1970年1月1日以來的毫秒數

例如, Date date = new Date(64060588799000L);

上面的語句返回的日期為格林尼治標准時間3 12月31日23:59:59,您的示例比該時間大〜9924倍。

原來我擁有的值是使用紀元,我要做的就是將1970年1月1日的紀元值減去我的長整數,然后將其除以10,000。

public Date getDateFromTick(long ticks){
    final long TICKS_AT_EPOCH = 621355968000000000L;
    final long TICKS_PER_MILLIS = 10000;

    Date date = new Date((ticks-TICKS_AT_EPOCH)/TICKS_PER_MILLIS);
    Log.v(TAG, "DATE:>> (" + ticks + ") to " + date.toString());

    return date;
}

希望這對任何人有幫助。

暫無
暫無

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

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