2017-03-08 48 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); 

    } 
}