Java convert double to date format

十年热恋 提交于 2019-12-20 05:38:21

问题


I have made a little app in ios+firebase, now I am trying to connect android. In ios I save date as double (for example: -242528463.775282), but then I trying to retrieve same double in java it giving me another date.

in 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);

Is it possible to convert double to date without converting to long?


回答1:


Since your double represents the number of seconds of you date from now, and the Date constructor in Java is expecting a number of milliseconds since 01-01-1970, you have to multiply your number to get a number of milliseconds (* 1000) and substract that from the current number of milliseconds since 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);

But, the problem with the way you store your dates is that if you are calling this code today and tomorrow it will not return the same date, as the current time is changing. You should use timeIntervalSince1970 instead of timeIntervalSinceNow.




回答2:


Have a play around with statements below. In particular; long myLong = todate.getTime();
and store this to interpret later perhaps?

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/java-convert-double-to-date-format

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!