用Java创建带有值的日期对象

时间:2020-01-09 10:35:16  来源:igfitidea点击:

在应用程序中,我们可能需要显示当前日期和时间,或者我们可能必须创建一个日期对象,并在其中指定年,月,日甚至小时,分钟和秒的值。在本文中,我们将介绍如何使用Java中的值创建Date对象。

尽管使用java.time中的新Date and Time API(例如LocalTime,LocalDate,LocalDateTIme和ZonedDateTime)很容易做到这一点,但是如果必须使用java.util类,则还可以使用Date和GregorianCalendar获得带有值的Date对象类。

使用GregorianCalendar的日期对象

在GregorianCalendar类中,以下三个构造函数用于创建实例,该实例的值分别为年,月,月,日,时,分,秒。

  • GregorianCalendar(int year,int month,int dayOfMonth)–构造一个GregorianCalendar,并在默认时区中使用默认语言环境设置给定日期。
  • GregorianCalendar(int年,int月,int dayOfMonth,int hourOfDay,int分钟)–构造一个GregorianCalendar,并为给定日期和时间的默认时区设置默认语言环境。
  • GregorianCalendar(int年,int月,int dayOfMonth,int hourOfDay,int分钟,int秒)–构造一个GregorianCalendar,为给定日期和时间的默认时区设置默认语言环境。
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class FormatDate {
  public static void main(String[] args) {
    // Creating GregorianCalendar with values
    GregorianCalendar calendar = new GregorianCalendar(2019, Calendar.FEBRUARY, 20, 18, 9, 22);
    // Getting Date object
    Date date = calendar.getTime();
    
    System.out.println("DateTime is- " + date);
    // Specifying pattern	
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
    // Format date 
    System.out.println("Time in 24 Hour format - " + sdf.format(date));
  }
}

使用新的日期和时间API创建日期对象

在新的Date and Time API类中,我们可以使用of()的静态方法传递用于创建日期的值。

使用LocalDate

如果只想创建没有时间值的日期,则可以使用java.time.LocalDate

LocalDate date = LocalDate.of(2019, Month.APRIL, 3);
System.out.println("Date - " + date); // Date – 2019-04-03

使用LocalTime

如果只想指定时间值,则可以使用java.time.LocalTime

LocalTime time = LocalTime.of(17, 8, 32);
System.out.println("Time - " + time); //Time – 17:08:32

使用LocalDateTime

如果要同时指定日期和时间值,则可以使用java.time.LocalDateTime

LocalDateTime dateTime = LocalDateTime.of(2018, Month.DECEMBER, 23, 13, 18, 23);
System.out.println("Date Time - " + dateTime);//2018-12-23T13:18:23

使用ZonedDateTime

上述课程没有时区信息。如果需要时区信息,请使用ZonedDateTime并设置适当的时区ID。

ZonedDateTime zdt = ZonedDateTime.of(LocalDateTime.of(2018, Month.DECEMBER, 23, 13, 18, 23), ZoneId.of("Europe/Paris"));
System.out.println("Zoned time - " + zdt); //2018-12-23T13:18:23+01:00[Europe/Paris]