我已经用ios+firebase做了一个小应用,现在我正在尝试连接安卓。在ios中,我将日期保存为双精度(例如:-242528463.775282),但在java中,我尝试检索相同的双精度,它会给我另一个日期。
在IOS - 01.07.2009 in Java -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);是否可以将双精度转换为日期而不转换为长整型?
发布于 2017-03-08 16:58:06
由于您的double表示从现在开始的日期的秒数,而Java语言中的Date构造函数期望的是自1970年1月1日以来的毫秒数,因此您必须将该数乘以得到毫秒数(* 1000),然后从自1970年1月1日以来的当前毫秒数中减去该值(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。
发布于 2017-03-08 17:20:31
试着使用下面的语句。
并将其存储起来,以便稍后解释?
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);
}
}https://stackoverflow.com/questions/42666270
复制相似问题