繁体   English   中英

如何在 Java 中获取当前日期/时间 [重复]

[英]How to get the current date/time in Java [duplicate]

在 Java 中获取当前日期/时间的最佳方法是什么?

这取决于您想要的日期/时间形式:

  • 如果您希望日期/时间作为单个数值,则System.currentTimeMillis()为您提供,表示为 UNIX 纪元后的毫秒数(作为 Java long )。 该值是 UTC 时间点的增量,与本地时区1无关。

  • 如果您希望日期/时间的形式允许您以数字方式访问组件(年、月等),您可以使用以下方法之一:

    • new Date()为您提供一个用当前日期/时间初始化的Date对象。 问题是Date API 方法大多有缺陷......并且不推荐使用。

    • Calendar.getInstance()使用默认的LocaleTimeZone为您提供一个使用当前日期/时间初始化的Calendar对象。 其他重载允许您使用特定的Locale和/或TimeZone 日历有效……但 API 仍然很麻烦。

    • new org.joda.time.DateTime()使用默认时区和年表为您提供一个使用当前日期/时间初始化的Joda 时间对象。 还有很多其他的 Joda 替代品……太多了,无法在这里描述。 (但请注意,有些人报告说 Joda 时间存在性能问题。例如https://stackoverflow.com/questions/6280829。

    • 在 Java 8 中,调用java.time.LocalDateTime.now()java.time.ZonedDateTime.now()将为您提供当前日期/时间的表示2

在 Java 8 之前,大多数了解这些事情的人都推荐Joda-time作为(迄今为止)最好的 Java API,用于处理涉及时间点和持续时间计算的事情。

对于 Java 8 及更高版本,建议使用标准java.time包。 Joda 时间现在被认为“过时”,Joda 维护者建议人们迁移。 3 .


1 - System.currentTimeMillis()给出“系统”时间。 虽然将系统时钟设置为(标称)UTC 是正常做法,但本地 UTC 时钟和真实 UTC 之间会存在差异(增量)。 增量的大小取决于系统时钟与 UTC 同步的程度(以及频率)。
2 - 请注意 LocalDateTime 不包括时区。 正如 javadoc 所说: “如果没有偏移量或时区等附加信息,它就不能表示时间线上的瞬间。”
3 - 注意:如果您不迁移,您的 Java 8 代码不会中断,但 Joda 代码库最终可能会停止获取错误修复和其他补丁。 截至 2020 年 2 月,Joda 的官方“生命周期结束”尚未公布,Joda API 也未标记为已弃用。

(注意:仅适用于 Java 版本 <8。对于 Java 8+,请查看其他回复。)

如果您只需要以 YYYY.MM.DD-HH.MM.SS(非常常见的情况)格式输出时间戳,那么这里是这样做的方法:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());

如果您希望当前日期为字符串,请尝试以下操作:

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

或者

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));

http://www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/

Java 8 中,它是:

LocalDateTime.now()

如果您需要时区信息:

ZonedDateTime.now()

如果您想打印花哨的格式化字符串:

System.out.println(ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME))

tl;博士

Instant.now()                         // Capture the current moment in UTC, with a resolution of nanoseconds. Returns a `Instant` object.

… 或者 …

ZonedDateTime.now(                    // Capture the current moment as seen in…
    ZoneId.of( "America/Montreal" )   // … the wall-clock time used by the people of a particular region (a time zone).
)                                     // Returns a `ZonedDateTime` object.

时间

一些答案提到java.time类是与最早版本的 Java 捆绑在一起的麻烦的旧遗留日期时间类的现代替代品。 下面是更多信息。

在此处输入图片说明

时区

其他答案未能解释时区在确定当前日期和时间方面的重要性。 对于任何给定时刻,日期时间在全球各地因地区而异。 例如,午夜过后几分钟在法国巴黎是新的一天,而在魁北克蒙特利尔仍然是“昨天”。

Instant

作为最佳实践,您的大部分业务逻辑和数据存储/交换都应该在UTC 中完成。

要以纳秒为单位获取UTC 中的当前时刻,请使用Instant类。 传统的计算机硬件时钟的精度有限,因此当前时刻可能以毫秒或微秒而不是纳秒为单位捕获。

Instant instant = Instant.now();

ZonedDateTime

您可以将该Instant调整为其他时区。 应用ZoneId对象以获取ZonedDateTime

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

我们可以跳过Instant直接获取当前的ZonedDateTime

ZonedDateTime zdt = ZonedDateTime.now( z );

始终传递可选的时区参数。 如果省略,则应用 JVM 的当前默认时区。 默认甚至可以运行时随时可能改变。 不要让您的应用受到您无法控制的外部性影响。 始终指定所需/预期的时区。

ZonedDateTime do_Not_Do_This = ZonedDateTime.now(); // BAD - Never rely implicitly on the current default time zone.

您可以稍后从ZonedDateTime提取Instant

Instant instant = zdt.toInstant();

当您想要时间轴上的实际时刻时,请始终使用InstantZonedDateTime而不是LocalDateTime Local…类型故意没有时区概念,因此它们仅代表可能时刻的粗略概念。 要获得实际时刻,您必须分配一个时区以将Local…类型转换为ZonedDateTime ,从而使其有意义。

LocalDate

LocalDate类表示没有时间和时区的仅日期值。

ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );  // Always pass a time zone.

字符串

要生成表示日期时间值的字符串,只需对标准ISO 8601格式的 java.time 类调用toString

String output = myLocalDate.toString();  // 2016-09-23

… 或者 …

String output = zdt.toString();  // 2016-09-23T12:34:56.789+03:00[America/Montreal]

ZonedDateTime类通过在方括号中明智地附加时区名称来扩展标准格式。

对于其他格式,在DateTimeFormatter类上搜索 Stack Overflow 上的许多问题和答案。

避免使用LocalDateTime

相反,由RamanSB问题的评论,你应该使用LocalDateTime类为当前日期与时间。

LocalDateTime故意缺少任何时区或 UTC 偏移量信息。 因此,当您在时间线上跟踪特定时刻时,这并不合适。 当然适合捕捉当前时刻。

LocalDateTime只有日期和时间,例如“2020 年 1 月 23 日中午”,但我们不知道这是日本东京的中午还是美国俄亥俄州托莱多的中午,两个不同的时刻相隔许多小时。

“本地”的措辞是违反直觉的。 它是指任何地方,而不是任何一个特定的地方。 例如,今年的圣诞节从 12 月 25 日午夜开始: 2017-12-25T00:00:00 ,表示为LocalDateTime 但这意味着在全球不同时间点的午夜。 午夜首先发生在基里巴斯,然后是新西兰,再晚几个小时在印度,等等,在法国圣诞节开始前还有几个小时,加拿大的孩子们还在等待那一天。 这些圣诞节开始点中的每一个都将表示为单独的ZonedDateTime


从系统外部

如果您不能信任您的系统时钟,请参阅Java:从服务器而不是系统时钟获取当前日期和时间我的答案

几个外部无线电时钟设备的照片

java.time.Clock

要利用当前时刻的替代供应商,请编写抽象java.time.Clock类的子类。

您可以将Clock实现作为参数传递给各种java.time方法。 例如, Instant.now( clock )

Instant instant = Instant.now( yourClockGoesHere ) ;

出于测试目的,请注意Clock本身静态可用的Clock的替代实现: fixedoffsettick等。


关于java.time

java.time框架内置于 Java 8 及更高版本中。 这些类取代麻烦的老传统日期时间类,如java.util.DateCalendar ,和SimpleDateFormat

要了解更多信息,请参阅Oracle 教程 并在 Stack Overflow 上搜索许多示例和解释。 规范是JSR 310

现在处于维护模式Joda-Time项目建议迁移到java.time类。

您可以直接与您的数据库交换java.time对象。 使用符合JDBC 4.2或更高版本的JDBC 驱动程序 不需要字符串,不需要java.sql.*类。

从哪里获得 java.time 类?

哪个 java.time 库与哪个版本的 Java 或 Android 一起使用的表

ThreeTen-Extra项目用额外的类扩展了 java.time。 该项目是未来可能添加到 java.time 的试验场。 您可以在这里找到一些有用的类,比如IntervalYearWeekYearQuarter ,和更多

只需创建一个 Date 对象...

import java.util.Date;

Date date = new Date();
    // 2015/09/27 15:07:53
    System.out.println( new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(Calendar.getInstance().getTime()) );

    // 15:07:53
    System.out.println( new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) );

    // 09/28/2015
    System.out.println(new SimpleDateFormat("MM/dd/yyyy").format(Calendar.getInstance().getTime()));

    // 20150928_161823
    System.out.println( new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime()) );

    // Mon Sep 28 16:24:28 CEST 2015
    System.out.println( Calendar.getInstance().getTime() );

    // Mon Sep 28 16:24:51 CEST 2015
    System.out.println( new Date(System.currentTimeMillis()) );

    // Mon Sep 28
    System.out.println( new Date().toString().substring(0, 10) );

    // 2015-09-28
    System.out.println( new java.sql.Date(System.currentTimeMillis()) );

    // 14:32:26
    Date d = new Date();
    System.out.println( (d.getTime() / 1000 / 60 / 60) % 24 + ":" + (d.getTime() / 1000 / 60) % 60 + ":" + (d.getTime() / 1000) % 60 );

    // 2015-09-28 17:12:35.584
    System.out.println( new Timestamp(System.currentTimeMillis()) );

    // Java 8

    // 2015-09-28T16:16:23.308+02:00[Europe/Belgrade]
    System.out.println( ZonedDateTime.now() );

    // Mon, 28 Sep 2015 16:16:23 +0200
    System.out.println( ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME) );

    // 2015-09-28
    System.out.println( LocalDate.now(ZoneId.of("Europe/Paris")) ); // rest zones id in ZoneId class

    // 16
    System.out.println( LocalTime.now().getHour() );

    // 2015-09-28T16:16:23.315
    System.out.println( LocalDateTime.now() );

用:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());
System.out.println(timeStamp );

(它正在工作。)

有许多不同的方法:

创建日期对象并简单地将其打印出来。

Date d = new Date(System.currentTimeMillis());
System.out.print(d);

类似于上述解决方案。 但我总是发现自己在寻找这段代码:

Date date=Calendar.getInstance().getTime();
System.out.println(date);

对于 java.util.Date,只需创建一个新的 Date()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date)); //2016/11/16 12:08:43

对于 java.util.Calendar,使用 Calendar.getInstance()

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal)); //2016/11/16 12:08:43

对于 java.time.LocalDateTime,使用 LocalDateTime.now()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
System.out.println(dtf.format(now)); //2016/11/16 12:08:43

对于 java.time.LocalDate,使用 LocalDate.now()

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate localDate = LocalDate.now();
System.out.println(dtf.format(localDate)); //2016/11/16

参考: https : //www.mkyong.com/java/java-how-to-get-current-date-time-date-and-calender/

java.util.Date date = new java.util.Date();

它会自动填充实例化的时间。

一、了解java.util.Date类

1.1 如何获取当前日期

import java.util.Date;

class Demostration{
    public static void main(String[]args){
        Date date = new Date(); // date object
        System.out.println(date); // Try to print the date object
    }
}

1.2 如何使用 getTime() 方法

import java.util.Date;
public class Main {
    public static void main(String[]args){
        Date date = new Date();
        long timeInMilliSeconds = date.getTime();
        System.out.println(timeInMilliSeconds);
    }
}

这将返回自 1970 年 1 月 1 日格林威治标准时间 00:00:00 以来的毫秒数以进行时间比较。

1.3 如何使用 SimpleDateFormat 类格式化时间

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

class Demostration{
    public static void main(String[]args){
        Date date=new Date();
        DateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
        String formattedDate=dateFormat.format(date);
        System.out.println(formattedDate);
    }
}

还可以尝试使用不同的格式模式,例如“yyyy-MM-dd hh:mm:ss”并选择所需的模式。 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

2、理解java.util.Calendar类

2.1 使用Calendar类获取当前时间戳

import java.util.Calendar;

class Demostration{
    public static void main(String[]args){
        Calendar calendar=Calendar.getInstance();
        System.out.println(calendar.getTime());
    }
}

2.2 尝试使用 setTime 和其他设置方法将日历设置为不同的日期。

来源: http : //javau91.blogspot.com/

你看过 java.util.Date 吗? 这正是您想要的。

Java 8 或以上

LocalDateTime.now() and ZonedDateTime.now()

我发现这是最好的方法:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime())); // 2014/08/06 16:00:22

用:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd::HH:mm:ss");
System.out.println(sdf.format(System.currentTimeMillis()));

打印语句将打印调用它的时间,而不是创建SimpleDateFormat时间。 所以它可以被重复调用而无需创建任何新对象。

看看Date类。 还有较新的Calendar类,它是执行许多日期/时间操作的首选方法(许多 Date 上的方法已被弃用。)

如果你只想要当前日期,那么要么创建一个新的 Date 对象,要么调用Calendar.getInstance(); .

 System.out.println( new SimpleDateFormat("yyyy:MM:dd - hh:mm:ss a").format(Calendar.getInstance().getTime()) );
    //2018:02:10 - 05:04:20 PM

带有 AM/PM 的日期/时间

新的数据时间 API 是在 Java 8 出现时引入的。这是由于旧数据时间 API 中引起的以下问题。

难以处理时区:需要编写大量代码来处理时区。

不是线程安全的:java.util.Date 不是线程安全的。

所以看看 Java 8

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.time.Month;


public class DataTimeChecker {

    public static void main(String args[]) {
        DataTimeChecker dateTimeChecker = new DataTimeChecker();
        dateTimeChecker.DateTime();
    }

    public void DateTime() {
        // Get the current date and time
        LocalDateTime currentTime = LocalDateTime.now();
        System.out.println("Current DateTime: " + currentTime);

        LocalDate date1 = currentTime.toLocalDate();
        System.out.println("Date : " + date1);

        Month month = currentTime.getMonth();
        int day = currentTime.getDayOfMonth();
        int seconds = currentTime.getSecond();

        System.out.println("Month : " + month);
        System.out.println("Day : " + day);
        System.out.println("Seconds : " + seconds);

        LocalDateTime date2 = currentTime.withDayOfMonth(17).withYear(2018);
        System.out.println("Date : " + date2);

        //Prints 17 May 2018
        LocalDate date3 = LocalDate.of(2018, Month.MAY, 17);
        System.out.println("Date : " + date3);

        //Prints 04 hour 45 minutes
        LocalTime date4 = LocalTime.of(4, 45);
        System.out.println("Date : " + date4);

        // Convert to a String 
        LocalTime date5 = LocalTime.parse("20:15:30");
        System.out.println("Date : " + date5);
    }
}

上面编码的输出:

Current DateTime: 2018-05-17T04:40:34.603
Date : 2018-05-17
Month : MAY
Day : 17
Seconds : 34
Date : 2018-05-17T04:40:34.603
Date : 2018-05-17
Date : 04:45
Date : 20:15:30

如前所述,基本的 Date() 可以在获取当前时间方面满足您的需求。 在我最近大量使用 Java 日期的经验中,内置类有很多奇怪之处(以及许多 Date 类方法的弃用)。 令我印象深刻的一个奇怪之处是,月份是基于 0 指数的,从技术角度来看这是有道理的,但实际上可能非常令人困惑。

如果您只关心当前日期就足够了 - 但是如果您打算对日期进行大量操作/计算,那么使用第三方库可能会非常有益(之所以存在这么多,是因为许多 Java 开发人员对内置功能)。

我支持 Stephen C 的建议,因为我发现 Joda-time 在简化我的日期工作方面非常有用,它也有很好的文档记录,您可以在整个网络上找到许多有用的示例。 我什至最终编写了一个静态包装类(作为 DateUtils),我用它来整合和简化所有常见的日期操作。

我创建了这个方法,它对我有用......

public String GetDay() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("dd")));
}

public String GetNameOfTheDay() {
    return String.valueOf(LocalDateTime.now().getDayOfWeek());
}

public String GetMonth() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM")));
}

public String GetNameOfTheMonth() {
    return String.valueOf(LocalDateTime.now().getMonth());
}

public String GetYear() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy")));
}

public boolean isLeapYear(long year) {
    return Year.isLeap(year);
}

public String GetDate() {
    return GetDay() + "/" + GetMonth() + "/" + GetYear();
}

public String Get12HHour() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("hh")));
}

public String Get24HHour() {
    return String.valueOf(LocalDateTime.now().getHour());
}

public String GetMinutes() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("mm")));
}

public String GetSeconds() {
    return String.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("ss")));
}

public String Get24HTime() {
    return Get24HHour() + ":" + GetMinutes();
}

public String Get24HFullTime() {
    return Get24HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}

public String Get12HTime() {
    return Get12HHour() + ":" + GetMinutes();
}

public String Get12HFullTime() {
    return Get12HHour() + ":" + GetMinutes() + ":" + GetSeconds();
}
import java.util.*;
import java.text.*;

public class DateDemo {
   public static void main(String args[]) {
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
      System.out.println("Current Date: " + ft.format(dNow));
   }
}

您可以使用日期来获取当前数据。 所以使用SimpleDateFormat获取格式

您可以自己使用Date对象和格式。 很难格式化,需要更多的代码,例如,

Date dateInstance = new Date();
int year = dateInstance.getYear()+1900;//Returns:the year represented by this date, minus 1900.
int date = dateInstance.getDate();
int month = dateInstance.getMonth();
int day = dateInstance.getDay();
int hours = dateInstance.getHours();
int min = dateInstance.getMinutes();
int sec = dateInstance.getSeconds();

String dayOfWeek = "";
switch(day){
    case 0:
        dayOfWeek = "Sunday";
        break;
    case 1:
        dayOfWeek = "Monday";
        break;
    case 2:
        dayOfWeek = "Tuesday";
        break;
    case 3:
        dayOfWeek = "Wednesday";
        break;
    case 4:
        dayOfWeek = "Thursday";
        break;
    case 5:
        dayOfWeek = "Friday";
        break;
    case 6:
        dayOfWeek = "Saturday";
        break;
}
System.out.println("Date: " + year +"-"+ month + "-" + date + " "+ dayOfWeek);
System.out.println("Time: " + hours +":"+ min + ":" + sec);

输出:

Date: 2017-6-23 Sunday
Time: 14:6:20

正如您所看到的,这是最糟糕的方法,根据 oracle 文档,它已被 弃用

甲骨文文档:

类 Date 表示特定的时刻,精度为毫秒。

在 JDK 1.1 之前,类 Date 有两个附加功能。 它允许将日期解释为年、月、日、小时、分钟和秒值。 它还允许格式化和解析日期字符串。 不幸的是,这些函数的 API 不适合国际化。 从 JDK 1.1 开始,应该使用 Calendar 类在日期和时间字段之间进行转换,并且应该使用 DateFormat 类来格式化和解析日期字符串。 不推荐使用 Date 中的相应方法。

因此,您也可以使用Calendar类,

Calendar.YEAR;
//and lot more

要获取当前时间,您可以使用:

Calendar rightNow = Calendar.getInstance();

文件:

与其他语言环境敏感类一样, Calendar提供了一个类方法getInstance ,用于获取这种类型的通用对象。 Calendar 的getInstance方法返回一个Calendar对象,其日历字段已用当前日期和时间初始化

下面的代码用于仅获取日期

Date rightNow = Calendar.getInstance().getTime();
System.out.println(rightNow);

此外, Calendar类有子类。 GregorianCalendar是其中之一,也是Calendar具体子类,提供了世界上大多数国家使用的标准日历系统。

使用GregorianCalendar示例:

Calendar cal = new GregorianCalendar();
int hours = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int ap = cal.get(Calendar.AM_PM);

String amVSpm;
if(ap == 0){
    amVSpm = "AM";
}else{
    amVSpm = "PM";
}

String timer = hours + "-" + minute + "-" + second + " " +amVSpm;
System.out.println(timer);

您可以使用SimpleDateFormat ,简单快捷的方式来格式化日期:

String pattern = "yyyy-MM-dd";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);

String date = simpleDateFormat.format(new Date());
System.out.println(date);

阅读此Jakob Jenkov 教程:Java SimpleDateFormat

正如其他人提到的,当我们需要从日期进行操作时,我们没有简单和最好的方法,或者我们无法满足内置的类、API。

例如,当我们需要在两个日期之间获得不同时,当我们需要比较两个日期时(也有内置方法)等等。 我们不得不使用第三方库。 Joda Time就是其中之一

另请阅读:

. 最开心的事情是现在(在 Java 8 中),没有人需要出于任何原因下载和使用库。 在 Java 8 中获取当前日期和时间的简单示例,

LocalTime localTime = LocalTime.now();
System.out.println(localTime);

//with time zone
LocalTime localTimeWtZone = LocalTime.now(ZoneId.of("GMT+02:30"));
System.out.println(localTimeWtZone);

阅读有关 Java 8 date好博文之一

请记住要了解更多关于 Java 日期和时间的信息,因为您可以获得/使用更多的方法和/或有用的方法。

编辑:

根据@BasilBourque 评论,诸如java.util.Datejava.util.Calendarjava.text.SimpleTextFormat等麻烦的旧日期时间类现在是遗留的,由java.time取代。

试试这个代码:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class CurrentTimeDateCalendar {
    public static void getCurrentTimeUsingDate() {
        Date date = new Date();
        String strDateFormat = "hh:mm:ss a";
        DateFormat dateFormat = new SimpleDateFormat(strDateFormat);
        String formattedDate= dateFormat.format(date);
        System.out.println("Current time of the day using Date - 12 hour format: " + formattedDate);
    }
    public static void getCurrentTimeUsingCalendar() {
        Calendar cal = Calendar.getInstance();
        Date date=cal.getTime();
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
        String formattedDate=dateFormat.format(date);
        System.out.println("Current time of the day using Calendar - 24 hour format: "+ formattedDate);
    }
}

样本输出是:

使用日期的当前时间 - 12 小时格式:11:13:01 PM

使用日历的当前时间 - 24 小时格式:23:13:01

更多信息:

在 Java 中获取当前日期时间

使用 java 8 的当前日期:首先,让我们使用 java.time.LocalDate 来获取当前系统日期:

LocalDate localDate = LocalDate.now();

要获取任何其他时区的日期,我们可以使用 LocalDate.now(ZoneId):

LocalDate localDate = LocalDate.now(ZoneId.of("GMT+02:30"));

我们还可以使用 java.time.LocalDateTime 来获取 LocalDate 的实例:

LocalDateTime localDateTime = LocalDateTime.now();
LocalDate localDate = localDateTime.toLocalDate();

我会继续并提出这个答案,因为当我有同样的问题时,这就是我所需要的:

Date currentDate = new Date(System.currentTimeMillis());

currentDate现在是您在 Java Date对象中的当前日期。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM