Java转换为双日期格式

时间:2017-03-08 08:20:51

标签: java date type-conversion double long-integer

我在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?

2 个答案:

答案 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);

    }
}