Java中日期和时间类以及Calendar类用法详解
Java中有三个主要的日期时间类:Date、Calendar和SimpleDateFormat。在Java 8及以上版本中,还增加了新的日期时间API(即java.time包)。
1. Date类
日期类java.util.Date
最初设计用于表示当前时间。Date自基准时间(1970年1月1日)以来的毫秒数存储日期和时间。
以下是Date类的例子,展示如何使用Date类来获取并打印出当前日期、时间。
import java.util.*;
public class DateExample {
public static void main(String args[]) {
Date date = new Date();
System.out.println("Current date: "+date);
}
}
上述代码运行后的输出结果为 :
Current date: Wed Jun 03 14:23:08 PDT 2020
但是从Java 8开始,官方不再推荐使用Date类。因此,在Java 8之前使用Date类,建议使用Calendar类。
2. Calendar类
Calendar(日历)类是一个抽象类,它提供了许多方法来操作日期和时间。它也给出了实例化为特定瞬间的方法。Calendar支持“秒”和“毫秒”粒度。
下面是Calendar类的一个例子,展示如何使用Calendar类来获取并打印出特定日期的日期、月份和年份:
import java.util.*;
public class CalendarExample {
public static void main(String args[]) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, 2020);
cal.set(Calendar.MONTH, Calendar.MAY);
cal.set(Calendar.DAY_OF_MONTH, 16);
System.out.println(
"Calendar's Year: " + cal.get(Calendar.YEAR));
System.out.println(
"Calendar's Month: " + cal.get(Calendar.MONTH));
System.out.println(
"Calendar's Day of Month: " + cal.get(Calendar.DAY_OF_MONTH));
}
}
上述代码运行后的输出结果为:
Calendar's Year: 2020
Calendar's Month: 4
Calendar's Day of Month: 16
这里需要注意,Calendar的月份以0开始,例如:0代表一月,1代表二月,以此类推。
3. SimpleDateFormat类
SimpleDateFormat类提供格式化和解析操作日期和时间。它允许指定自定义的日期格式符号来格式化日期时间。以下是一些常用日期格式符号:
符号 | 含义 |
---|---|
yyyy | 年份,例如:1998, 2020 |
MM | 月份,例如:01,12 |
MMM | 简写月份,例如:Jan,Dec |
dd | 两位数的日期,例如:01,31 |
E | 星期几,例如:Sun, Mon, Tue... |
HH | 小时(24小时制),例如:00,23 |
hh | 小时(12小时制),例如:00,12 |
mm | 分钟,例如:00,59 |
ss | 秒钟,例如:00,59 |
SSS | 毫秒数,例如:234,543 |
z | 时区,例如:GMT,UTC,CST |
以下是SimpleDateFormat类的一个例子,展示如何使用不同的日期格式来展示日期:
import java.util.*;
import java.text.*;
public class SimpleDateFormatExample {
public static void main(String args[]) {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS zzz");
System.out.println("当前时间是 : " + sdf.format(date));
}
}
上述代码运行后的输出结果为:
当前时间是 : 2020-06-03 14:23:08.854 PDT
4. Java 8 新的日期时间API
Java 8新的日期API中,包括了java.time包,其中最常用的类为LocalDateTime。LocalDateTime类是线程安全的,因为它是不可变的。
下面是一个简单示例展示了如何使用LocalDateTime类获取并打印当前的日期和时间:
import java.time.LocalDateTime;
public class LocalDateTimeExample {
public static void main(String[] args) {
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println("Current LocalDateTime: " + currentDateTime);
}
}
上述代码运行后的输出结果为:
Current LocalDateTime: 2020-06-03T14:23:08.854
结论
在Java中处理日期和时间是非常重要的,因为几乎所有的程序都会在一定程度上使用这些东西。在使用日期和时间API时,请牢记它们的特点和使用方法。在Java 8及以上的版本中,新日期时间API已经几乎代替了旧的API。在处理日期和时间时,请始终使用最新的API。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的日期和时间类以及Calendar类用法详解 - Python技术站