日期时间相关总结
日期时间相关总结
Date 类
-
时间相关概念
1
2
3java.util.Date: 表示日期和时间的类
毫秒: 千分之一秒 1000毫秒 = 1 秒
毫秒值的作用: 可以对时间和日期进行计算1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34package org.example;
import java.util.Date;
/**
* Hello world!
*/
public class testUtilPackageDate {
public static void main(String[] args) {
demo01();
dame02(100L);
dame03();
}
private static void demo01() {
// 空参: 获取当前系统的日期和时间
Date date = new Date();
System.out.println("date1 = " + date);
}
private static void dame02(long l) {
// 传递毫秒值,把毫秒值转换为 Date 日期
Date date = new Date(l);
System.out.println("date2 = " + date);
}
private static void dame03() {
// getTime: 把日期转换为毫秒值(相当于 System.currentTimeMillis() )
Date date = new Date();
System.out.println("date.getTime() = " + date.getTime());
}
}
DateFormat 类
-
说明
java.text.DateFormat
是日期 / 时间格式化子类的抽象类, 我们通过这个类可以帮我们完成日期和文本之间的转换, 也就是可以再 Date
对象与 String
对象之间来回转换 -
格式化: 按照指定的格式,
从 Date
对象转换为 String
对象 -
解析: 按照指定的格式,
从 String
对象转换为 Date
对象 -
使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29package org.example;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class textDateFormat {
public static void main(String[] args) throws ParseException {
demo01();
demo02();
}
private static void demo01() {
// date => format
Date date = new Date();
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("sdf.format(date) = " + sdf.format(date));
}
private static void demo02() throws ParseException {
// String => Date
String date = "2025-12-21";
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println("sdf.parse(date) = " + sdf.parse(date));
}
}
-
-
计算一个人已经出生了多少天
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16private static void demo03() throws ParseException {
// 现在
Long nowDate = System.currentTimeMillis();
// 出生日期
String bornDate = "1991-02-19";
// 1. 将字符串日期转换为 Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date parseBornDate = sdf.parse(bornDate);
// 将日期类型转换为 ms
long bornDateTime = parseBornDate.getTime();
long diffTime = nowDate - bornDateTime;
System.out.println("diffTime = " + diffTime);
// 转换为年月日 /1000(s)/60(min)/60(h)/24(day)=> day
long diffDay = diffTime / 1000 / 60 / 60 / 24;
System.out.println(diffDay);
}
Calendar 日历类
-
根据
Calendar
类的 API
文档, 常用方法有 -
get(int field)
: 返回给定日历字段的值1
2
3
4
5
6
7public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 当前年份
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
}
} -
set(int field,int value)
: 将给定的日历字段设置为给定值1
2
3
4
5
6
7
8
9
10
11
12public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 设置年份
calendar.set(Calendar.YEAR, 9090);
// 获取设置后的年份信息
int year = calendar.get(Calendar.YEAR);
System.out.println("YEAR: " + year);
// 同时设置年月日
calendar.set(0000, 6, 2);
}
} -
add(int field,int amount)
: 根据日历的规则,为给定的日历字段添加或减去指定的时间量 1
2
3
4
5
6
7
8
9
10
11
12
13package org.example;
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 1: +1/-1
calendar.add(Calendar.YEAR, 1);
System.out.println(calendar.get(Calendar.YEAR));
}
} -
getTime()
: 返回一个表示此Calendar
时间值 (从厉元到现在的毫秒偏移量) 的 Date
对象 1
2
3
4
5
6
7
8
9
10
11
12
13
14package org.example;
import java.util.Calendar;
import java.util.Date;
public class CalendarTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
Date time = calendar.getTime();
// out: Thu Nov 03 18:24:02 CST 2022
System.out.println(time);
}
}
-
JDK8 新增
- 日期类
LocalDate
: 不包含具体时间的日期LocalTime
: 不含日期的时间LocalDateTime
: 包含了日期以及时间Instant
: 代表的是时间戳DateTimeFormatter
:用于做时间的格式化和解析的 Duration
: 用于计算两个时间
间隔Period
: 用于计算两个日期
间隔
实体类中日期数据类型
-
使用
1
2
3
4
5
6public class User {
private String username;
private String password;
private LocalDateTime createTime;
private LocalDateTime updateTime;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 coder-itl!
评论