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字母都保留为模式字母,这些字母定义为以下-
Character | Remark | Example |
---|---|---|
G | Era designator | AD |
y | 四位数年份 | 2001 |
M | 月份 | July or 07 |
d | 天 | 10 |
h | 上午/下午 (1〜12) | 12 |
H | 小时 (0~23) | 22 |
m | 分钟 | 30 |
s | 秒 | 55 |
S | 毫秒 | 234 |
E | 星期几 | Tuesday |
D | 一年中的哪一天 | 360 |
F | 每月的星期几 | 2 (second Wed. in July) |
w | 一年中的第几周 | 40 |
W | 一个月中的第几周 | 1 |
a | A.M./P.M. | PM |
k | 一天中的小时 (1~24) | 24 |
K | A.M./P.M. (0~11) | 10 |
z | 时区 | Eastern Standard Time |
' | 转义文字 | Delimiter |
" | 单引号 | ` |
使用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是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
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)