Java 日期和时间
让我们先来了解一下组成**日期**的参数。
它主要包含 –
- **年份**(2位或4位数字)
- **月份**(2位数字、月份的前3个字母或月份的完整单词)。
- **日期**(这将是月份的实际日期)。
- **星期**(给定日期的星期几 – 如周日、周一、周二等)
在计算机系统中,有相当多的参数可以用来关联日期。我们将在本主题的后续部分中看到它们。
在Java中显示日期
现在让我们看看Java如何提供日期。首先,我们来看看如何获取当前日期——
Java在java.util包中提供了一个Date类。该包提供了几个方法来处理日期。
您可以通过调用Date类的构造函数来使用Date对象,如下所示:
import java.util.Date; class Date_Ex1 { public static void main(String args[]) { // Instantiate a Date object by invoking its constructor Date objDate = new Date(); // Display the Date & Time using toString() System.out.println(objDate.toString()); } }
输出
Wed Nov 29 06:36:22 UTC 2017
在上面的示例中,日期以默认格式显示。如果我们想以另一种格式显示日期和时间,首先要了解日期的格式。
SimpleDateFormat:解析和格式化日期
你们一定都在幼儿园学过字母……。
现在让我们来学习日期格式的ABC。
字母 | 日期或时间组件 | 示例 |
---|---|---|
G | 时代标志 | AD |
ÿ | 年份 | 2018 |
AB | 一年中的月份 | 七月或七月或07 |
w | 一年中的周数 | 27 |
W | 一个月中的周数 | 2 |
D | 一年中的第几天 | 189 |
d | 一个月中的第几天 | 10 |
F | 一个月中的星期几 | 2 |
E | 一周中的星期名称 | 星期二或周二 |
u | 星期的数字(1=周一,…,7=周日) | 1 |
a | 上午/下午标记 | 下午 |
H | 一天中的小时(0-23) | 0 |
k | 一天中的小时(1-24) | 24 |
K | 上午/下午的小时(0-11) | 0 |
h | 上午/下午的小时(1-12) | 12 |
m | 小时中的分钟 | 30 |
s | 分钟中的秒 | 55 |
AC | 毫秒 | 978 |
z | 时区 | 太平洋标准时间;PST;GMT-08:00 |
Z | 时区 | -0800 |
X | 时区 | -08 或 -0800 或 -08:00 |
别担心,您不需要记住所有这些,您可以在需要格式化特定日期时随时参考它们。
如何使用SimpleDateFormat?
Java提供了一个名为SimpleDateFormat的类,它允许您根据您的要求格式化和解析日期。
您可以使用上述字符来指定格式——
例如
1) 所需日期格式:**2012.10.23 20:20:45 PST**
相应的日期格式将是——**yyyy.MM.dd HH:mm:ss zzz**
2) 所需日期格式:**09:30:00 AM 23-May-2012**
相应的日期格式将是——**hh:mm:ss a dd-MMM-yyyy**
**提示:**请注意字母的大小写。如果您将M误认为m,您将得到不希望的结果!
让我们通过代码示例来学习这一点。
import java.text.SimpleDateFormat; import java.util.Date; class TestDates_Format { public static void main(String args[]) { Date objDate = new Date(); // Current System Date and time is assigned to objDate System.out.println(objDate); String strDateFormat = "hh:mm:ss a dd-MMM-yyyy"; //Date format is Specified SimpleDateFormat objSDF = new SimpleDateFormat(strDateFormat); //Date format string is passed as an argument to the Date format object System.out.println(objSDF.format(objDate)); //Date formatting is applied to the current date } }
输出
Wed Nov 29 06:31:41 UTC 2017 06:31:41 AM 29-Nov-2017
比较日期示例
比较日期的最有效方法是使用方法——compareTo()
让我们看一下下面的代码片段——
import java.text.SimpleDateFormat; import java.text.ParseException; import java.util.Date; class TestDates_Compare { public static void main(String args[]) throws ParseException { SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy"); Date dt_1 = objSDF.parse("20-08-1981"); Date dt_2 = objSDF.parse("12-10-2012"); System.out.println("Date1 : " + objSDF.format(dt_1)); System.out.println("Date2 : " + objSDF.format(dt_2)); if (dt_1.compareTo(dt_2) > 0) { System.out.println("Date 1 occurs after Date 2"); } // compareTo method returns the value greater than 0 if this Date is after the Date argument. else if (dt_1.compareTo(dt_2) < 0) { System.out.println("Date 1 occurs before Date 2"); } // compareTo method returns the value less than 0 if this Date is before the Date argument; else if (dt_1.compareTo(dt_2) == 0) { System.out.println("Both are same dates"); } // compareTo method returns the value 0 if the argument Date is equal to the second Date; else { System.out.println("You seem to be a time traveller !!"); } } }
输出
Date1 : 20-08-1981 Date2 : 12-10-2012 Date 1 occurs before Date 2