java.util.Date日期类详解

后端 潘老师 6个月前 (10-31) 153 ℃ (0) 扫码查看

学习使用java.util.Date类创建新日期、获取当前日期、将日期解析为字符串或格式化Date对象。这些用例经常需要,把它们放在一个地方将有助于为我们许多人节省时间。

值得注意的是,Date 实例没有时区信息。 Date 实例表示自 Epach 以来花费的时间(以毫秒为单位)。如果我们打印 Date 实例,它总是打印机器的默认或本地时区。因此,Date.toString() 方法中打印的时区信息不应误导您。

1.将Date日期格式化为字符串

Java程序使用SimpleDateFormat.format()将Date格式化为字符串。请注意,SimpleDateFormat不是一个线程安全的类,因此我们不应该与多个线程共享它的实例。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String date = sdf.format(new Date());

下面列出了您可以使用的一些最常见的模式字母。

y   = 年 (yy or yyyy)
M   = 月  (MM)
d   = 日 (dd)
h   = 12小时制的时 (0-12)  (hh)
H   = 24小时制的时 (0-23)  (HH)
m   = 分 (mm)
s   = 秒 (ss)
S   = 毫秒 (SSS)
z   = 时区        (比如 Pacific Standard Time...)
Z   = 时区, 时间偏移量 (比如 -0800)
格式 示例e
yyyy-MM-dd (ISO) “2018-07-14”
dd-MMM-yyyy “14-Jul-2018”
dd/MM/yyyy “14/07/2018”
E, MMM dd yyyy “Sat, Jul 14 2018”
h:mm a “12:08 PM”
EEEE, MMM dd, yyyy HH:mm:ss a “Saturday, Jul 14, 2018 14:31:06 PM”
yyyy-MM-dd'T'HH:mm:ssZ “2018-07-14T14:31:30+0530”
hh 'o''clock' a, zzzz “12 o’clock PM, Pacific Daylight Time”
K:mm a, z “0:08 PM, PDT”

2.将字符串解析为Date

使用SimpleDateFormat.parse()方法将字符串解析为Date实例的Java程序。

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateInString = "2023-10-21 10:20:56";
Date date = sdf.parse(dateInString);

3.获取当前日期和时间

java.util.Date类表示自纪元以来经过的日期和时间。下面给出了获取当前日期和时间并以给定格式打印的Java程序。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = new Date();
System.out.println(dateFormat.format(date));//2023/10/31 16:41:18

作为参考,自Java 8以来,我们可以使用LocalDate、LocalTime和LocalDateTime类。

LocalDate today = LocalDate.now();
System.out.println("今天日期 : " + today);//今天日期 : 2023-10-31
LocalTime time = LocalTime.now();
System.out.println("今天时间 : " + time);//今天时间 : 16:43:33.573

4.在Date和Calendar之间进行转换

4.1日历转换为日期

Calendar calendar = Calendar.getInstance();
Date date =  calendar.getTime();

4.2. 日期转换为日历

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String dateInString = "2023-10-31 10:22:56";
Date date = sdf.parse(dateInString);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);

5. 比较两个日期

我们可以使用日期对象的 compareTo() 方法来比较两个日期实例。它返回一个整数值,表示给定的日期在另一个日期之前还是之后。

比较日期1.CompareTo(date2)将返回:

  • 如果 date2 等于 date1,则返回值 0;
  • 如果 date1 在 date2 之前,则返回小于 0 的值;
  • 如果 date1 在 date2 之后,则返回大于 0 的值。
Date date1 = new Date();
Date date2 = new Date();
int comparison = date1.compareTo(date2);

6.提取日、月、年

Java程序,分别获取年份、月份等日期部分。

获取年份、月份、月份中的天数、小时等方法已过时。如果您需要获取或设置年份、月份、月份中的天数等,请使用java.util.Calendar。

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int year       = calendar.get(Calendar.YEAR);
int month      = calendar.get(Calendar.MONTH);
int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // 1月 = 0, 而不是 1
int dayOfWeek  = calendar.get(Calendar.DAY_OF_WEEK);
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
int weekOfMonth= calendar.get(Calendar.WEEK_OF_MONTH);
int hour       = calendar.get(Calendar.HOUR);        // 12小时制
int hourOfDay  = calendar.get(Calendar.HOUR_OF_DAY); // 24 小时制
int minute     = calendar.get(Calendar.MINUTE);
int second     = calendar.get(Calendar.SECOND);
int millisecond= calendar.get(Calendar.MILLISECOND);

以上就是java.util.Date日期类详解的全部内容。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/back/10549.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】