Java - Date & Time日期

Java - Date & Time日期 首页 / Java入门教程 / Java - Date & Time日期

Java在java.util包中提供了Date类,该类封装了当前日期和时间。

Date类支持两个构造函数,如下表所示。

Sr.No.Constructor & Remark
1

Date()

此构造函数使用当前日期和时间初始化对象 。

2

Date(long millisec)

此构造函数接受一个参数,该参数等于自1970年1月1日午夜以来经过的毫秒数。

下面是Date类的方法。

Sr.No.Method & Remark
1

boolean after(Date date)

如果调用日期对象包含的日期晚于DATE指定的日期,则返回TRUE,否则返回FALSE。

2

boolean before(Date date)

如果调用日期对象包含的日期早于DATE指定的日期,则返回TRUE,否则返回FALSE。

3

Object clone()

无涯教程网

复制调用日期对象 。

链接:https://www.learnfk.comhttps://www.learnfk.com/java/java-date-time.html

来源:LearnFk无涯教程网

4

int compareTo(Date date)

将调用对象的值与日期的值进行比较。如果值相等,则返回0。如果调用对象早于Date,则返回负值。否则返回正值。

5

int compareto(Object Obj)

如果obj属于class date,则操作与compareto(Date)相同。否则,它将抛出ClassCastException。

6

boolean equals(Object date)

如果调用日期对象包含的时间和日期与DATE指定的时间和日期相同,则返回TRUE,否则返回FALSE。

7

long getTime()

返回自1970年1月1日以来经过的毫秒数。

8

int hashCode()

返回调用对象的哈希代码。

9

void setTime(long time)

设置由time指定的时间和日期,time表示从1970年1月1日午夜起经过的时间(以毫秒为单位)。

10

string toString()

将调用日期对象转换为字符串并返回输出。

当前时间日期

这是在Java中获取当前日期和时间的一种非常简单的方法。您可以将简单的 Date 对象 与toString()方法一起使用,以打印当前日期和时间,如下所示-

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      //实例化一个日期对象
      Date date = new Date();

      //使用 toString() 显示时间和日期
      System.out.println(date.toString());
   }
}

这将产生以下输出-

on May 04 09:51:52 CDT 2019

格式化日期

SimpleDateFormat是一个具体的类,用于以区分区域设置的方式格式化和解析日期。SimpleDateFormat允许您从选择任何用户定义的日期&时间格式化模式开始。

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

这将产生以下输出-

Current Date: Sun 2014.07.18 at 04:14:09 PM PDT

要指定时间格式,请使用时间模式字符串。在此模式中,所有ASCII字母都保留为模式字母,这些字母定义为以下-

CharacterRemarkExample
GEra designatorAD
y四位数年份2001
M月份July or 07
d10
h上午/下午 (1〜12)12
H小时 (0~23)22
m分钟30
s55
S毫秒234
E星期几Tuesday
D一年中的哪一天360
F每月的星期几2 (second Wed. in July)
w一年中的第几周40
W一个月中的第几周1
aA.M./P.M.PM
k一天中的小时 (1~24)24
K A.M./P.M. (0~11)10
z时区Eastern Standard Time
'转义文字Delimiter
"单引号`

printf格式化

使用printf方法可以非常容易地完成日期和时间格式化。您使用两个字母的格式,以t开头,并以表中的一个字母结尾,如以下代码所示。

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      //实例化一个日期对象
      Date date = new Date();

      //显示时间和日期
      String str = String.format("Current Date/Time : %tc", date );

      System.out.printf(str);
   }
}

这将产生以下输出-

Current Date/Time : Sat Dec 15 16:37:57 MST 2019

索引必须紧跟在%之后,并且必须以$终止。

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      //实例化一个日期对象
      Date date = new Date();
  
      //显示时间和日期
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

这将产生以下输出-

Due date: February 09, 2014

示例

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      //实例化一个日期对象
      Date date = new Date();
  
      //显示格式化日期
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

这将产生以下输出-

Due date: February 09, 2004

字符串转日期

SimpleDateFormat类有一些其他方法,特别是parse,它尝试根据给定SimpleDateFormat对象中存储的格式解析字符串。

import java.util.*;
import java.text.*;
  
public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
      String input = args.length == 0 ? "1818-11-11" : args[0]; 

      System.out.print(input + " Parses as "); 
      Date t;
      try {
         t = ft.parse(input); 
         System.out.println(t); 
      } catch (ParseException e) { 
         System.out.println("Unparseable using " + ft); 
      }
   }
}

运行上述程序的Example将产生以下输出-

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Sleep示例

您可以Sleep任何时间段,从一毫秒到计算机的生命周期。如以下程序将休眠3秒-

import java.util.*;
public class SleepDemo {

   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(5*60*10); 
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) {
         System.out.println("Got an exception!"); 
      }
   }
}

这将产生以下输出-

Sun May 03 18:04:41 GMT 2019
Sun May 03 18:04:51 GMT 2019

测试运行时间

有时,您可能需要以毫秒为单位测量时间点。所以让无涯教程再一次重写上面的示例,-

import java.util.*;
public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

这将产生以下输出-

Sun May 03 18:16:51 GMT 2019
Sun May 03 18:16:57 GMT 2019
Difference is : 5993

GregorianCalendar 类

GregorianCalendar是Calendar类的具体实现,它实现了您所熟悉的正常的Gregorian日历。在本教程中没有讨论Calendar类,您可以查看标准Java文档。

Calendar的getInstance()方法返回用默认区域设置和时区中的当前日期和时间初始化的GregorianCalendar。GregorianCalendar定义了两个字段:AD和BC。这些代表了公历定义的两个时代。

GregorianCalendar 对象-还有几个构造函数

Sr.No.Constructor & Remark
1

GregorianCalendar()

使用默认区域设置的默认时区中的当前时间构造默认GregorianCalendar。

2

GregorianCalendar(int year,int Month,int date)

构造一个GregorianCalendar,其给定日期设置为默认时区,默认区域设置。

3

GregorianCalendar(int Year,int Month,int Date,int Hour,int Minutes)

构造一个GregorianCalendar,其中给定的日期和时间是为默认区域设置的默认时区设置的。

4

GregorianCalendar(int Year,int Month,int date,int Hour,int Minutes,int Second)

构造一个GregorianCalendar,其中给定的日期和时间是为默认区域设置的默认时区设置的。

5

GregorianCalendar(Locale ALocale)

基于给定区域设置的默认时区中的当前时间构造GregorianCalendar。

6

GregorianCalendar(TimeZone zone)

基于给定时区中的当前时间,使用默认区域设置构造GregorianCalendar。

7

GregorianCalendar(TimeZone zone,locale aLocale)

基于给定时区中具有给定区域设置的当前时间构造GregorianCalendar。

下面是GregorianCalendar类-提供的几个有用的方法列表

Sr.No.Method & Remark
1

void add(int field,int amount)

根据日历的规则,将指定的时间添加到给定的时间字段。

2

protected void ComputeFields()

将UTC(毫秒)转换为时间字段值。

3

protected void ComputeTime()

覆盖日历将时间字段值转换为UTC(毫秒)。

4

boolean equals(Object Obj)

将此GregorianCalendar与对象引用进行比较。

5

int get(int field)

获取给定时间字段的值。

6

int getActualMaximum(int field)

在给定当前日期的情况下,返回此字段可能具有的最大值。

7

int getActualMinimum(int field)

在给定当前日期的情况下,返回此字段可能具有的最小值。

8

int getGreatestMinimum(int field)

如果变化,则返回给定字段的最大最小值。

9

Date getGregorianChange()

获取公历更改日期。

10

int getLeastMaximum(int field)

如果变化,则返回给定字段的最低最大值。

11

int getMaximum(int field)

返回给定字段的最大值。

12

Date getTime()

获取此日历的当前时间。

13

long getTimeInMillis()

获取此Calendar的当前时间(Long)。

14

TimeZone getTimeZone()

获取时区。

15

int getMinimum(int field)

返回给定字段的最小值。

16

int hashCode()

覆盖hashCode。

17

boolean isLeapYear(Int Year)

确定给定年份是否为闰年。

18

void roll(int field,boolean up)

在给定时间字段上添加或减去(向上/向下)单个时间单位,而不更改更大的字段。

19

void set(int field,int value)

使用给定值设置时间字段。

20

void set(int year,int Month,int date)

设置字段Year、Month和Date的值。

21

void set(int Year,int Month,int Date,int Hour,int Minutes)

设置字段Year、Month、Date、Hour和Minutes的值。

22

void set(int Year,int Month,int Date,int Hour,int Minutes,int Second)

设置字段Year、Month、Date、Hour、Minutes和Second的值。

23

void setGregorianChange(Date)

设置GregorianCalendar更改日期。

24

void setTime(Date)

使用给定日期设置此日历的当前时间。

25

void setTimeInMillis(Long Millis)

根据给定的长度值设置此日历的当前时间。

26

void setTimeZone(TimeZone zone)

使用给定的时区值设置时区。

27

string toString()

返回此日历的字符串表示形式。

GregorianCalendar示例

import java.util.*;
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"};
      
      int year;
      //创建一个已初始化的公历当前日期和时间在默认语言环境和时区。
      
      GregorianCalendar gcalendar = new GregorianCalendar();
      
      //显示当前时间和日期信息。
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      //测试当前年份是否为闰年
      if(gcalendar.isLeapYear(year)) {
         System.out.println("The current year is a leap year");
      }else {
         System.out.println("The current year is not a leap year");
      }
   }
}

这将产生以下输出-

Date: Apr 22 2019
Time: 11:25:27
The current year is not a leap year

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

深入剖析Kubernetes -〔张磊〕

许式伟的架构课 -〔许式伟〕

Kafka核心技术与实战 -〔胡夕〕

移动端自动化测试实战 -〔思寒〕

基于人因的用户体验设计课 -〔刘石〕

林外 · 专利写作第一课 -〔林外〕

计算机基础实战课 -〔彭东〕

超级访谈:对话玉伯 -〔玉伯〕

Rust 语言从入门到实战 -〔唐刚〕

好记忆不如烂笔头。留下您的足迹吧 :)