Java Date 和 SimpleDateFormat 时间类详解
Java Date 和 SimpleDateFormat 是 Java 日期/时间处理中最常用的类,可以方便地进行日期和时间格式化、解析和计算。本文将详细讲解 Java Date 和 SimpleDateFormat 的使用方法,包括创建 Date 对象、格式化日期和时间、解析字符串为 Date 对象、获取日期和时间的不同部分以及计算日期和时间等方面。
创建 Date 对象
Date 类代表一个日期和时间的实例,它的构造方法可以创建一个包含当前时间的 Date 对象,也可以根据指定的年、月、日、时、分、秒等参数创建一个指定时间的 Date 对象。例如:
// 创建当前时间的 Date 对象
Date now = new Date();
// 创建指定时间的 Date 对象
Date date = new Date(121, 5, 14, 13, 30, 0); // 2021年6月14日13:30:00
格式化日期和时间
SimpleDateFormat 是一个用于格式化和解析日期和时间的类。它可以将 Date 对象格式化为一个指定格式的字符串,也可以将一个字符串解析为 Date 对象。在 SimpleDateFormat 中,可以使用特定的格式符和模式字符串来定义日期和时间的格式。下面是一些常用的日期和时间格式模式:
格式模式 | 描述 |
---|---|
yyyy | 年份,例如 2021 |
MM | 月份,范围是 01-12 |
dd | 日期,范围是 01-31 |
HH | 小时,范围是 00-23 |
mm | 分钟,范围是 00-59 |
ss | 秒钟,范围是 00-59 |
SSS | 毫秒,范围是 000-999 |
E | 星期几,例如星期一到星期日 |
下面是将 Date 对象格式化为字符串的示例代码:
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS E");
String str = sdf.format(now);
System.out.println(str); // 2021-06-14 19:20:15.319 Mon
上面的代码使用 yyyy-MM-dd HH:mm:ss.SSS E 格式字符串将当前时间格式化为字符串,并输出到控制台。可以看到,输出结果包括了年、月、日、时、分、秒、毫秒和星期几等信息。
解析字符串为 Date 对象
除了将 Date 对象格式化为字符串,SimpleDateFormat 还可以从字符串中解析出一个对应的 Date 对象。下面是将字符串解析为 Date 对象的示例代码:
String str = "2021-06-01 12:30:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);
System.out.println(date); // Tue Jun 01 12:30:00 CST 2021
上面的代码将一个字符串解析为 Date 对象,并输出到控制台。可以看到,输出结果为一个包含了指定日期和时间信息的 Date 对象。
获取日期和时间的不同部分
Date 和 Calendar 类提供了许多方法来获取日期和时间的不同部分,例如年、月、日、时、分、秒等。下面是一些常用的获取日期和时间部分的示例代码:
Date now = new Date();
// 获取年份
int year = now.getYear() + 1900;
// 获取月份
int month = now.getMonth() + 1;
// 获取日期
int day = now.getDate();
// 获取小时
int hour = now.getHours();
// 获取分钟
int minute = now.getMinutes();
// 获取秒钟
int second = now.getSeconds();
上面的代码使用 Date 类的方法获取了当前时间的年、月、日、时、分、秒等信息,并将它们分别赋值给变量。需要注意的是,由于 getYear() 方法获取的是相对于 1900 年的年份,因此要加上 1900 才是实际的年份。
计算日期和时间
Date 类提供了许多方法来计算日期和时间,例如增加或减少天数、小时数等。下面是一些常用的计算日期和时间的示例代码:
Date now = new Date();
// 增加一天
long oneDay = 24 * 60 * 60 * 1000;
Date tomorrow = new Date(now.getTime() + oneDay);
// 减少一小时
long oneHour = 60 * 60 * 1000;
Date yesterday = new Date(now.getTime() - oneHour);
上面的代码使用 Date 类的方法增加或减少了指定的时间量,并创建了一个包含指定日期和时间的 Date 对象。
示例
下面是一个完整的示例代码,演示了如何使用 Date 和 SimpleDateFormat 类来格式化时间、解析字符串、获取时间部分和计算时间等操作:
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) throws Exception {
// 创建当前时间的 Date 对象
Date now = new Date();
// 创建指定时间的 Date 对象
Date date = new Date(121, 5, 14, 13, 30, 0);
// 格式化当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS E");
String str = sdf.format(now);
System.out.println(str);
// 解析字符串为 Date 对象
String str2 = "2021-06-01 12:30:00";
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date2 = sdf2.parse(str2);
System.out.println(date2);
// 获取时间部分
int year = now.getYear() + 1900;
int month = now.getMonth() + 1;
int day = now.getDate();
int hour = now.getHours();
int minute = now.getMinutes();
int second = now.getSeconds();
System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second);
// 计算时间
long oneDay = 24 * 60 * 60 * 1000;
Date tomorrow = new Date(now.getTime() + oneDay);
long oneHour = 60 * 60 * 1000;
Date yesterday = new Date(now.getTime() - oneHour);
System.out.println(tomorrow);
System.out.println(yesterday);
}
}
总结
Java Date 和 SimpleDateFormat 是 Java 日期/时间处理中最常用的类,可以方便地进行日期和时间格式化、解析和计算。在日常开发中,使用这两个类可以方便地处理各种日期和时间格式的需求,是 Java 开发必备的基础知识。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java Date和SimpleDateFormat时间类详解 - Python技术站