【问题标题】:Java convert double to date formatJava将double转换为日期格式
【发布时间】:2017-07-28 17:19:45
【问题描述】:

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

在 IOS - 01.07.2009 在 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);

是否可以在不转换为 long 的情况下将 double 转换为 date?

【问题讨论】:

  • 您是否将日期存储为时间戳?
  • double 代表什么?自 1970 年 1 月 1 日以来的日子?还有什么?
  • double 表示 timeIntervalSinceNow
  • 顺便说一句,这是一种存储日期时间值的糟糕方法。原因之一是您使用浮点技术可能会更改您的数据。浮点牺牲了执行速度的准确性。这样做时,可能会将无关的数字添加到您的小数部分。我建议使用 ISO 8601 格式的字符串,或者如果您的数据库提供日期时间数据类型。

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


【解决方案1】:

由于您的 double 表示您从现在开始的秒数,而 Java 中的 Date 构造函数预计自 1970 年 1 月 1 日以来的毫秒数,您必须乘以您的数字才能得到一个数字毫秒 (* 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

【讨论】:

    【解决方案2】:

    试一试下面的语句。特别是; 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);
    
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 2020-01-09
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多