我在ios + firebase上做了一个小应用程序,现在我正在尝试连接android。在ios中我将日期保存为double(例如:-242528463.775282),但后来我尝试在java中检索相同的double,它给了我另一个日期。
在IOS中的- 2009年7月1日 在爪哇 - 29.12.1969
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);
是否可以将double转换为date而不转换为long?
答案 0 :(得分:2)
由于double
表示从现在起约会的秒数,并且Java中的Date
构造函数预计自01-01-1970以来的毫秒数,您必须乘以数字获得一些毫秒(* 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
。
答案 1 :(得分: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);
}
}