2017-03-08 51 views
0

我已經在ios + firebase中做了一個小應用程序,現在我試圖連接android。在ios中,我將日期保存爲double(例如:-242528463.775282),但是我試圖在java中檢索同一個double,它給了我另一個日期。Java轉換雙日期格式

在IOS

- 01.07.2009 在Java中 - 1969年12月29日

double myDouble = date; 
    long myLong = (long) (myDouble); 
    System.out.println(myLong); 

    Date itemDate = new Date(itemLong); 
    String myDateStr = new SimpleDateFormat("dd-MM-yyyy").format(itemDate);    
    editTextDate.setText(myDateStr); 

是否有可能將翻番至日期轉換,無須轉換爲多長時間?

+0

您是否將日期存儲爲時間戳? –

+6

雙代表什麼?自1 - 1970年以來的天數?還有別的嗎? – john16384

+0

double代表timeIntervalSinceNow – Rufat

回答

1

由於您double代表的秒數,你從現在開始日期,因爲01-01-1970的Date構造在Java中期待的毫秒數,你要乘以你的電話號碼,以獲得數毫秒( * 1000),並認爲。減去從毫秒的當前數量,因爲01-01-1970(System.currentTimeMillis()):

double myDouble = -242528463.775282; 
long myLong = System.currentTimeMillis() + ((long) (myDouble * 1000)); 
System.out.println(myLong); 

Date itemDate = new Date(myLong); 
String myDateStr = new SimpleDateFormat("dd-MM-yyyy").format(itemDate); 
System.out.println(myDateStr); 

但是,隨着存儲您的日期,方式的問題是,如果你是今天和明天調用此代碼它不會返回相同的日期,因爲當前時間正在改變。您應該使用timeIntervalSince1970而不是timeIntervalSinceNow

+0

非常感謝,它有幫助! – Rufat

0

玩弄下面的陳述。尤其是; long myLong = todate.getTime();
並且以後存儲該解釋或者?

import java.text.SimpleDateFormat; 
import java.util.Date; 

public class dateConvertDouble { 

    public static void main(String[] args) { 
     Date todate = new Date(); 
     System.out.println(todate); 

     long myLong = todate.getTime(); 
     System.out.println(myLong); 

     double myDouble = (double)myLong; 
     System.out.println(myDouble); 

     String myDateStr = new SimpleDateFormat("dd-MM-yyyy").format(myLong);    
     System.out.println(myDateStr); 

    } 
}