如何在Java中获取当前日期/时间

时间:2011-03-03 01:48:10

标签: java datetime

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

28 个答案:

答案 0 :(得分:605)

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

  • 如果您希望将日期/时间作为单个数值,那么System.currentTimeMillis()将为您提供,表示为UNIX纪元后的毫秒数(作为Java long)。该值是UTC时间点的增量,与本地时区无关......假设系统时钟设置正确。

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

    • new Date()为您提供了使用当前日期/时间初始化的Date对象。问题是Date API方法大多存在缺陷......并且已弃用。

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

    • new org.joda.time.DateTime()使用默认时区和年表为您提供使用当前日期/时间初始化的Joda-time对象。还有很多其他的Joda替代品......这里描述的太多了。 (但请注意,有些人报告说Joda时间存在性能问题。例如Jodatime's LocalDateTime is slow when used the first time。)

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

在Java 8之前,大多数了解这些事情的人都建议Joda-time拥有(到目前为止)用于处理涉及时间点和持续时间计算的最佳Java API。使用Java 8,这已不再适用。但是,如果您已经在代码库中使用Joda时间,则没有强大的 2 原因需要迁移。


1 - 请注意,LocalDateTime不包含时区。正如javadoc所说:“它不能代表时间线上的瞬间,没有附加信息,如偏移或时区。”

2 - 如果不这样做,您的代码将不会中断,并且您不会收到弃用警告。当然,Joda代码库可能会停止获取更新,但它不太可能需要它们。没有更新意味着稳定性,这是的事情。另请注意,如果某人将解决Java平台中的回归导致的问题,那很有可能。

答案 1 :(得分:382)

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

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

答案 2 :(得分:98)

如果您希望当前日期为String,请尝试:

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/

答案 3 :(得分:69)

Java 8中,它是:

LocalDateTime.now()

如果您需要时区信息:

ZonedDateTime.now()

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

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

答案 4 :(得分:45)

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

Date date = new Date();

答案 5 :(得分:41)

    // 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() );

答案 6 :(得分:32)

TL;博士

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

......或......

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

java.time

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

enter image description here

时区

其他答案无法解释时区在确定当前日期和时间方面的重要性。对于任何给定时刻,日期的时间因地区而异。例如,午夜后的几分钟是Paris France中的新一天,而Montréal Québec中仍然是“昨天”。

Instant

作为最佳做法,您的大部分业务逻辑和数据存储/交换都应在UTC中完成。要使用UTC中的分辨率获取nanoseconds中的当前时刻,请使用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.

您稍后可以从Instant中提取ZonedDateTime

Instant instant = zdt.toInstant();

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

LocalDate

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

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

字符串

要生成表示日期时间值的String,只需在标准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的偏移信息。因此,当您跟踪时间线上的特定时刻时,是合适的。当然适合捕捉当前时刻。

“本地”措辞违反直觉。它意味着任何位置,而不是任何一个特定的位置。例如,圣诞节今年12月25日午夜开始:2017-12-25T00:00:00,表示为LocalDateTime。但这意味着在不同时间在全球不同地点的午夜。午夜发生在Kiribati,后来发生在新西兰,几个小时后发生在印度,依此类推,在法国圣诞节开始之前还有几个小时过去了,那时加拿大的孩子们还在等待那一天。这些圣诞节开始点中的每一个都将被表示为单独的ZonedDateTime

从您的系统外部

如果您不相信系统时钟,请参阅Java: Get current Date and Time from Server not System clockmy Answer

photo of a couple of external radio clock devices

java.time.Clock

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

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

Instant instant = Instant.now( yourClockGoesHere ) ;

出于测试目的,请注意Clock自身Clock静态提供的offset替代实施:fixedtickjava.sql.*等。

关于 java.time

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

现在位于Joda-Timemaintenance mode项目建议迁移到java.time类。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310

您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要{{1}}类。

从哪里获取java.time类?

ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 7 :(得分:18)

使用:

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

(它正在运作。)

答案 8 :(得分:15)

有许多不同的方法:

答案 9 :(得分:10)

创建日期对象,然后将其打印下来。

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

答案 10 :(得分:9)

与上述解决方案类似。但我总是发现自己正在寻找这一大块代码:

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

答案 11 :(得分:9)

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

答案 12 :(得分:8)

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

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

答案 13 :(得分:7)

第一了解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

第二了解java.util.Calendar类

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

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/

答案 14 :(得分:7)

对于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/

答案 15 :(得分:6)

我发现这是最好的方式:

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

答案 16 :(得分:4)

使用:

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

print语句将打印调用时的时间,而不是创建SimpleDateFormat时的时间。因此可以在不创建任何新对象的情况下重复调用它。

答案 17 :(得分:3)

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

如果您只想要当前日期,请创建新的Date对象或致电Calendar.getInstance();

答案 18 :(得分:3)

如上所述,基本的Date()可以在获取当前时间方面做到所需。在我最近与Java日期密切合作的经历中,内置类有许多奇怪之处(以及许多Date类方法的弃用)。对我而言,一个奇怪的是,从技术角度来看,几个月是0指数,但实际上可能会非常混乱。

如果你只关心应该满足的当前日期 - 但是如果你打算用日期做很多操作/计算,那么使用第三方库可能是非常有益的(因为很多Java开发人员都有这么多对内置功能不满意。

我是斯蒂芬C的第二推荐,因为我发现Joda-time在简化日期工作方面非常有用,它也有很好的文档记录,你可以在网上找到许多有用的例子。我甚至最终编写了一个静态包装类(作为DateUtils),我用它来巩固和简化所有常见的日期操作。

答案 19 :(得分:3)

  

随着Java 8的出现,引入了新的Data-Time API。这是应该的   以下是旧数据时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

答案 20 :(得分:2)

Java 8或更高版本

LocalDateTime.now() and ZonedDateTime.now()

答案 21 :(得分:1)

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获取格式

答案 22 :(得分:1)

 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

答案 23 :(得分:0)

我会继续把这个答案放进去,因为当我遇到同样的问题时,这就是我所需要的:

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

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

答案 24 :(得分:0)

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

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();
}

答案 25 :(得分:0)

只需尝试以下代码:

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

     

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

更多信息:

Getting Current Date Time in Java

答案 26 :(得分:0)

您可以自己使用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文档,它是deprecated

Oracle doc:

  

类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 tutorial: Java SimpleDateFormat

正如其他人所提到的,当我们需要从日期进行操作时,我们没有简单和最好的方式,或者我们对内置的API,API不满意。

例如,当我们需要get different between two dates时,我们需要compare two dates(there is in-built method also for this)等等。我们不得不使用第三方库。其中一个好的和受欢迎的是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);

其中一个good blog post to read about Java 8 date

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

修改

根据@BasilBourque的评论,java.util.Datejava.util.Calendarjava.text.SimpleTextFormat这些麻烦的旧日期时间类现在是legacy,取而代之的是{{3} }}

答案 27 :(得分:0)

使用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();