首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java将double转换为日期格式

Java将double转换为日期格式
EN

Stack Overflow用户
提问于 2017-03-08 16:20:51
回答 2查看 20.2K关注 0票数 0

我已经用ios+firebase做了一个小应用,现在我正在尝试连接安卓。在ios中,我将日期保存为双精度(例如:-242528463.775282),但在java中,我尝试检索相同的双精度,它会给我另一个日期。

在IOS - 01.07.2009 in Java -29.12.1969中

代码语言:javascript
复制
  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);

是否可以将双精度转换为日期而不转换为长整型?

EN

回答 2

Stack Overflow用户

发布于 2017-03-08 16:58:06

由于您的double表示从现在开始的日期的秒数,而Java语言中的Date构造函数期望的是自1970年1月1日以来的毫秒数,因此您必须将该数乘以得到毫秒数(* 1000),然后从自1970年1月1日以来的当前毫秒数中减去该值(System.currentTimeMillis()):

代码语言:javascript
复制
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

票数 3
EN

Stack Overflow用户

发布于 2017-03-08 17:20:31

试着使用下面的语句。

并将其存储起来,以便稍后解释?

代码语言:javascript
复制
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);

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42666270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档