Java 日期和时间

让我们先来了解一下组成**日期**的参数。

How to use Date in 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

比较日期示例

Compare Dates Example

比较日期的最有效方法是使用方法——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