import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
LocalDate
LocalTime
LocalDateTime
遵循的是国际标准ISO 8601
获取当前日期
LocalDate ld = LocalDate.now();
int year = ld.getYear();
int month = ld.getMonth().getValue();
int day = ld.getDayOfMonth();
月 日 不是从 0 开始, 1 月 就是 1, 不再是 0
构建 LocalDate
LocalDate ld = LocalDate.parse("2020-12-09");
LocalDate ld_2 = LocalDate.parse("12-09-2020", DateTimeFormatter.ofPattern("MM-dd-yyyy"));
LocalDate ld_3 = LocalDate.of(2020, 12 , 9);
LocalDate 默认使用 ISO 8601 标准,也可以指定日期格式
获取本地时间
LocalTime lt = LocalTime.now();
可以分别获取 时 分 秒 纳秒
int hour = lt.getHour();
int second = lt.getSecond();
int minute = lt.getMinute();
int nano = lt.getNano();
构建指定本地时间
LocalTime lt = LocalTime.parse("13:24:30");
LocalTime lt_1 = LocalTime.of(13, 24, 30, 0);
LocalTime lt_2 = LocalTime.parse("13:24:30", DateTimeFormatter.ofPattern("H:i:s"));
获取指定本地时间
LocalDateTime ldt = LocalDateTime.now();
可以分别获取 年 月 日 时 分 秒 纳秒
int year = ldt.getYear();
int month = ldt.getMonth().getValue();
int day = ldt.getDayOfMonth();
int hour = ldt.getHour();
int second = ldt.getSecond();
int minute = ldt.getMinute();
int nano = ldt.getNano();
构建本地日期时间
LocalDateTime m_ldt_1 = LocalDateTime.of(2021, 6, 11, 23, 12, 24, 3000);
// 使用 LocalDate 和 LocalTime 构建
LocalDate mld = LocalDate.of(2021, 6, 11);
LocalTime mlt = LocalTime.of(23, 12, 24);
LocalDateTime m_ldt_2 = LocalDateTime.of(mld, mlt);
// 解析默认格式
LocalDateTime s_ldt_1 = LocalDateTime.parse("2021-12-13T23:12:24");
// 解析自定义格式
LocalDateTime s_ldt_2 = LocalDateTime.parse("2021-12-13 23:12:24", DateTimeFormatter.ofPattern("y-M-d H:m:s"));
获取当前时区
ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId);
获取指定时区
ZoneId zoneId = ZoneId.of("America/New_York");
System.out.println(zoneId);
获取当前时区的时期时间
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("本地时区" + zonedDateTime);
// 本地时区 2021-11-26T08:34:05.919145+08:00[Asia/Shanghai]
获取于此同时, 纽约日期时间
ZonedDateTime zonedDateTimeNewYork = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println("纽约时区" + zonedDateTimeNewYork);
// 纽约时区 2021-11-25T19:34:05.929306-05:00[America/New_York]
从一个时区获取另一个时区的时间
LocalDateTime ldt = LocalDateTime.of(2021, 6, 11, 23, 12, 24, 3000);
ZoneId zidShangHai = ZoneId.of("Asia/Shanghai");
ZonedDateTime zdtShangHai = ldt.atZone(zidShangHai);
ZoneId zidNewYork = ZoneId.of("America/New_York");
ZonedDateTime zdt_new_york = zdtShangHai.withZoneSameInstant(zidNewYork);
System.out.println(zdt_new_york);
ZonedDateTime 转 long
ZonedDateTime zonedDateTime = ZonedDateTime.now();
long timestamps = zonedDateTime.toEpochSecond();
System.out.println("本地时间戳" + timestamps);
// 本地时间戳 1637887053
时间戳表示 自 1970年0时0分0秒 到当前时间的秒数
LocalDateTime 转 ZonedDateTime
LocalDateTime ldt = LocalDateTime.now();
ZonedDateTime zdt_local = ldt.atZone(ZoneId.systemDefault());
ZonedDateTime zdt_new_york = ldt.atZone(ZoneId.of("America/New_York"));
支持 LocalDateTime LocalDate LocalTime ZoneDateTime
在当前日期时间基础上, 添加指定的时间, 比如: plusYears(2)
表示增加 2 年
plus
表示增加, minus
表示减少
plusYears()
minusYears()
年plusMonths()
minusMonths()
月plusDays()
minusDays()
日plusWeeks()
minusWeeks()
周plusHours()
minusHours()
时plusMinutes()
minusMinutes()
分plusSeconds()
minusSeconds()
秒plusNanos()
minusNanos()
纳秒Period Duration 继承自, TemporalAmount 表示一段日期时间; Period 表示一段日期, Duration 表示一段时间
Duration.ofDays(1)
Duration.ofHours(1)
Period.ofYears(1)
plus(TemporalAmount)
增加 时间片
minus(TemporalAmount)
减少 时间片
LocalDateTime ldt = LocalDateTime.of(2021, 1, 12, 13, 24, 12);
Duration five_minute = Duration.ofMinutes(10);
LocalDateTime ldt_new = ldt.plus(five_minute);
// LocalDateTime ldt_new = ldt.minus(five_minute);
System.out.println(ldt_new);
// 2021-01-12T13:34:12
ZonedDateTime zonedDateTime = ZonedDateTime.now();
String str_t = zonedDateTime.format(DateTimeFormatter.ofPattern("MM-dd-yyyy"));
Symbol Meaning Presentation Examples
------ ------- ------------ -------
G era text AD; Anno Domini; A
y year-of-era year 2004; 04
D day-of-year number 189
M/L month-of-year number/text 7; 07; Jul; July; J
d day-of-month number 10
g modified-julian-day number 2451334
Q/q quarter-of-year number/text 3; 03; Q3; 3rd quarter
Y week-based-year year 1996; 96
w week-of-week-based-year number 27
W week-of-month number 4
E day-of-week text Tue; Tuesday; T
e/c localized day-of-week number/text 2; 02; Tue; Tuesday; T
F day-of-week-in-month number 3
a am-pm-of-day text PM
h clock-hour-of-am-pm (1-12) number 12
K hour-of-am-pm (0-11) number 0
k clock-hour-of-day (1-24) number 24
H hour-of-day (0-23) number 0
m minute-of-hour number 30
s second-of-minute number 55
S fraction-of-second fraction 978
A milli-of-day number 1234
n nano-of-second number 987654321
N nano-of-day number 1234000000
V time-zone ID zone-id America/Los_Angeles; Z; -08:30
v generic time-zone name zone-name Pacific Time; PT
z time-zone name zone-name Pacific Standard Time; PST
O localized zone-offset offset-O GMT+8; GMT+08:00; UTC-08:00
X zone-offset 'Z' for zero offset-X Z; -08; -0830; -08:30; -083015; -08:30:15
x zone-offset offset-x +0000; -08; -0830; -08:30; -083015; -08:30:15
Z zone-offset offset-Z +0000; -0800; -08:00
p pad next pad modifier 1
中国标准时间 (北京)
香港时间 (香港)
台北时间 (台北)
首尔
日本时间 (东京)
美国东部时间 (纽约)
美国山区时间 (丹佛)
美国中部时间 (哥斯达黎加)
美国中部时间 (芝加哥)
美国中部时间 (墨西哥城)
美国中部时间 (里贾纳)
美国太平洋时间 (洛杉矶)
马朱罗
中途岛
檀香山
安克雷奇
美国太平洋时间 (提华纳)
美国山区时间 (凤凰城)
奇瓦瓦
哥伦比亚时间 (波哥大)
委内瑞拉时间 (加拉加斯)
大西洋时间 (巴巴多斯)
亚马逊标准时间 (马瑙斯)
纽芬兰时间 (圣约翰)
圣地亚哥
布宜诺斯艾利斯
戈特霍布
乌拉圭时间 (蒙得维的亚)
圣保罗
南乔治亚
亚述尔群岛
佛得角
卡萨布兰卡
格林尼治标准时间 (伦敦)
中欧标准时间 (阿姆斯特丹)
中欧标准时间 (贝尔格莱德)
中欧标准时间 (布鲁塞尔)
中欧标准时间 (萨拉热窝)
西部非洲标准时间 (布拉扎维)
温得和克
东欧标准时间 (安曼)
东欧标准时间 (雅典)
东欧标准时间 (贝鲁特)
东欧标准时间 (开罗)
东欧标准时间 (赫尔辛基)
以色列时间 (耶路撒冷)
中部非洲标准时间 (哈拉雷)
明斯克
巴格达
莫斯科
科威特
东部非洲标准时间 (内罗毕)
伊朗标准时间 (德黑兰)
巴库
第比利斯
埃里温
迪拜
阿富汗时间 (喀布尔)
卡拉奇
乌拉尔
叶卡捷林堡
加尔各答
科伦坡
尼泊尔时间 (加德满都)
阿拉木图
缅甸时间 (仰光)
克拉斯诺亚尔斯克
曼谷
伊尔库茨克时间 (伊尔库茨克)
吉隆坡
佩思
雅库茨克时间 (雅库茨克)
达尔文
布里斯班
海参崴时间 (符拉迪沃斯托克)
关岛
阿德莱德
霍巴特
悉尼
马加丹时间 (马加丹)
奥克兰
斐济
东加塔布