在java中打印当前日期

时间:2014-11-03 15:46:42

标签: java time

我想在java中打印当前的日期和时间。这是我在java教程中尝试的代码:

import java.util.*;

public class Date {
   public static void main(String args[]) {
       // Instantiate a Date object
       Date date = new Date();

       // display time and date using toString()
       System.out.println(date.toString());
   }
}

编译好。但给出的输出是:

  

日期@ 15db9742

虽然我期待这样的输出:

  

Mon May 04 09:51:52 CDT 2009

代码有什么问题?

编辑: 我试图重命名该类..编辑代码:

import java.util.*;

public class DateDemo {
   public static void main(String args[]) {
       // Instantiate a Date object
       Date d = new Date();

       // display time and date using toString()
       System.out.println(d.toString());
   }
}

这是我编译代码并运行的方式:

  

sou @ sou-linux:〜/ Desktop / java $ javac DateDemo.java

     

sou @ sou-linux:〜/ Desktop / java $ java DateDemo

输出结果为:

  

日期@ 15db9742

10 个答案:

答案 0 :(得分:15)

您的类是一个自定义类,它正在生成Object.toString给出的输出。将该类重命名为Date以外的其他内容,以便正确导入java.util.Date

答案 1 :(得分:9)

您从toString()获得默认Object,因为您创建了自己的名为Date的类,该类隐藏了Date中导入的java.util.。您可以重命名您的课程,也可以使用规范名称java.util.Date,如

public static void main(String args[]) {
    java.util.Date date = new java.util.Date();
    System.out.println(date);
}

这里的输出是

Mon Nov 03 10:57:45 EST 2014

答案 2 :(得分:6)

public static void main(String[] args) {

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    //get current date time with Date()
    Date date = new Date();
    System.out.println(dateFormat.format(date));

    //get current date time with Calendar()
    Calendar cal = Calendar.getInstance();
    System.out.println(dateFormat.format(cal.getTime()));

}

答案 3 :(得分:2)

import java.util.Date;
public class Dte {

    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date.toString());
    }
}

将班级名称Date更改为Dte或某些内容,代码将正常运行。

输出为:Mon Nov 03 21:27:15 IST 2014

答案 4 :(得分:2)

您不应该使用toString()方法,因为:

  

类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称,符号字符“@”以及对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于值的字符串:

     

getClass()。getName()+'@'+ Integer.toHexString(hashCode())

引自docs.oracle:http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html)。

Date类旨在像其他人一样使用。只是想解释/给你一个参考原因。

答案 5 :(得分:1)

将您的班级从日期重命名为其他内容..然后,以下工作正常:

import java.util.Date;

public class ImplClass
{
   public static void main(String args[])
   {
       Date date = new Date();

       // display time and date using toString()
       System.out.println(date.toString());
   }

}

输出采用所需格式

Mon Nov 03 09:49:57 CST 2014

答案 6 :(得分:1)

您的班级名称是日期,所以

Date date = new Date();

将创建班级的对象,当您拨打date.toString()时,它将成为默认的Object.toString()方法。
因此,如果您必须使用java.util.Date课程,请将您的Date课程重命名为其他内容

答案 7 :(得分:1)

您可以保持代码像::

一样简单
import java.util.*;
public class Today{
  public static void main(String args[]){
    System.out.println("System Date :: ");
    System.out.println(new Date());
  }
}

除了将类名更改为今天或其他内容,而不是日期,因为它是关键字

答案 8 :(得分:1)

你可以试试这个,

import java.util.Date;

public class CurrentDate
{
    public static void main(String[] args)
    {
        Date currentDate = new Date();      
        System.out.println("Curent Date and Time - " + currentDate.toString());
    }
}

输出:

Mon May 04 09:51:52 CDT 2009

此外,您可以参考下面的日期和时间格式链接。非常有用。

https://docs.oracle.com/javase/tutorial/datetime/iso/datetime.html

https://docs.oracle.com/javase/7/docs/api/java/sql/Date.html

https://www.flowerbrackets.com/date-time-java-program/

答案 9 :(得分:1)

已经指出了根本原因并在 accepted answer 中提出了解决方案。这个答案是向未来的访问者介绍现代 Date-Time API。

java.time

java.util 日期时间 API 及其格式化 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern Date-Time API*

使用 java.time(现代日期时间 API)的解决方案:

import java.time.Instant;

public class Main {
    public static void main(String[] args) {
        Instant instant = Instant.now();
        System.out.println(instant);
    }
}

样本运行的输出:

2021-07-03T14:08:02.594203Z

ONLINE DEMO

Instant 表示 UTC 中时间线上的一个瞬时点。输出中的 Z 是零时区偏移的 timezone designator。它代表祖鲁语并指定 Etc/UTC 时区(时区偏移为 +00:00 小时)。

注意:如果您有java.util.Date的对象,您可以将其转换为Instant,如下所示:

Date date = new Date(); // A sample date
Instant instant = date.toInstant();

如何在特定时区显示当前日期时间:

使用 ZonedDateTime#nowZonedDateTime#now(ZoneId) 显示特定时区的当前日期时间。

演示:

import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        // The current date-time in the JVM's timezone
        ZonedDateTime zdtDefaultTz = ZonedDateTime.now();
        System.out.println(zdtDefaultTz);

        // The current date-time in a specific timezone
        ZonedDateTime zdtNewYork = ZonedDateTime.now(ZoneId.of("America/New_York"));
        System.out.println(zdtNewYork);
    }
}

样本运行的输出:

2021-07-03T15:19:48.007549+01:00[Europe/London]
2021-07-03T10:19:48.010048-04:00[America/New_York]

ONLINE DEMO

如果您有 java.util.DateInstant 的实例,如何在特定时区显示当前日期时间:

Instant 转换为 ZonedDateTime 表示所需时区中的日期-时间,例如

ZonedDateTime zdt = instant.atZone(ZoneId.of("America/New_York"));

演示:

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        Instant instant = Instant.now(); // new Date().toInstant()

        ZonedDateTime zdtDefaultTz = instant.atZone(ZoneId.systemDefault());
        System.out.println(zdtDefaultTz);

        ZonedDateTime zdtNewYork = instant.atZone(ZoneId.of("America/New_York"));
        System.out.println(zdtNewYork);

        ZonedDateTime zdtUtc = instant.atZone(ZoneId.of("Etc/UTC"));
        System.out.println(zdtUtc);
    }
}

输出:

2021-07-03T15:24:23.716050+01:00[Europe/London]
2021-07-03T10:24:23.716050-04:00[America/New_York]
2021-07-03T14:24:23.716050Z[Etc/UTC]

ONLINE DEMO

Trail: Date Time 了解有关现代 Date-Time API 的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project