使用Date();没有提供当前日期

时间:2014-09-03 18:44:42

标签: java android date

我正在尝试在我的Android应用程序(4.2.2),Eclipse Luna(4.4.0)上显示当前日期。在下面的代码中,我收到使用Date()的错误,说我必须添加一个参数。但是,添加0long当然会导致 1969年12月31日7:00 的日期。

 final DateFormat dateTimeFormatter = DateFormat.getDateTimeInstance();

 graph.setCustomLabelFormatter(new CustomLabelFormatter(){
    @Override
    public String formatLabel(double value, boolean isValueX) 
    {
        if (isValueX)
        {
        return dateTimeFormatter.format(new Date(0)); //how to append date to value
        }
        return null; //graphview generates Y-axis label
        }
     });

Date()仍可用作获取当前日期吗?

6 个答案:

答案 0 :(得分:1)

从构造函数中取出零!否则它将被解释为1970年以来的纪元以来的毫秒数

是的,'新日期()'完全有效,以获取当前日期/时间。

SirKuryaki是正确的,你导入错误(不应该是java.sql.Date)。

参考:http://docs.oracle.com/javase/6/docs/api/java/sql/Date.html

参考:http://docs.oracle.com/javase/6/docs/api/java/util/Date.html#Date()

答案 1 :(得分:1)

构造函数Date(long timestamp)接受一个long,即自纪元(1970年1月1日00:00:00 GMT)以来的毫秒数,并为其提供日期对象。传递0,因此会给你时代。

只需致电new Date(System.currentTimeMillis())即可获取当前日期!

编辑:

奇怪的是,你不能在没有任何参数的情况下使用new Date(),因为文档明确指出它是可用的(http://developer.android.com/reference/java/util/Date.html#Date())。也许你的项目是miconfigured

答案 2 :(得分:1)

您正在使用epoch date constructor(超过纪元0ms的特定时间),因此正确的输出实际上是1969年12月31日7:00。

如果您使用default constructor new Date(),它将默认为System.currentTimeMillis()并为您提供当前时间戳。

另外,请确保您使用的是java.util.Date而不是java.sql.Date

答案 3 :(得分:0)

使用new Date()new Date(System.currentTimeMillis());获取当前日期
new Date(long);表示使用指定的毫秒值初始化此Date实例。该值是自格林威治标准时间1970年1月1日以来的毫秒数。
参数
毫秒,格林威治标准时间1970年1月1日以来的毫秒数。

答案 4 :(得分:0)

我认为您导入错误,请确保在文件开头有此行

import java.util.Date;

然后你可以致电new Date()  http://developer.android.com/reference/java/util/Date.html

答案 5 :(得分:0)

这取决于您是要导入“java.util.Date”还是“java.sql.Date”。 SQL的一个需要构造函数中的值。

Eclipse将弹出一个对话框,询问您要导入的日期。您可能选择了错误的导入。如果是这种情况,只需清除文件顶部的“导入”,然后使用“java.util.Date”再次尝试