Java 日期和时间:SimpleDateFormat、当前日期和比较
在本教程中,您将学习——
- 在 Java 中显示当前日期
- SimpleDateFormat:解析和格式化日期
- 比较日期示例
让我们首先了解由 Date 组成的参数 .
它将主要包含——
- 年 (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 | 时代代号 | 广告 |
| 是 | 年份 | 2018 |
| M | 一年中的月份 | 7 月或 7 月或 07 |
| w | 一年中的一周 | 27 |
| W | 一个月中的一周 | 2 |
| D | 一年中的一天 | 189 |
| d | 一个月中的一天 | 10 |
| F | 一个月的星期几 | 2 |
| E | 星期几的名称 | 星期二或星期二 |
| 你 | 星期几(1 =星期一,...,7 =星期日) | 1 |
| 一个 | 上午/下午标记 | 下午 |
| H | 一天中的小时 (0-23) | 0 |
| k | 一天中的小时 (1-24) | 24 |
| K | 上午/下午 (0-11) 小时 | 0 |
| h | 上午/下午 (1-12) 小时 | 12 |
| m | 小时分钟 | 30 |
| s | 一分钟秒 | 55 |
| S | 毫秒 | 978 |
| z | 时区 | 太平洋标准时间;太平洋标准时间; 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) 所需日期格式:2012 年 5 月 23 日上午 9:30:00
指定的适当日期格式为-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
java