自学内容网 自学内容网

Java学习记录08

日期和时间的格式化编码

提示:在需要填写的解析日期字符串的地方其中的字母可以任意排列,只要有下列字母即可。不必理解为只有几种标准格式。

字母描述示例
G纪元标记AD
y四位年份2001
M月份July or 07
d一个月的日期10
h A.M./P.M. (1~12)格式小时12
H一天中的小时 (0~23)22
m分钟数30
s秒数55
S毫秒数234
E星期几Tuesday
D一年中的日子360
F一个月中第几周的周几2 (second Wed. in July)
w一年中第几周40
W一个月中第几周1
aA.M./P.M. 标记PM
k一天中的小时(1~24)24
K A.M./P.M. (0~11)格式小时10
z时区Eastern Standard Time
'文字定界符Delimiter
"单引号`

SimpleDateFormat

1.构造方法

SimpleDateFormat()

使用默认 FORMAT区域设置的默认模式和日期格式符号构造SimpleDateFormat。

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat();
System.out.println(formatter.format(date)); //2024/11/15 09:12
SimpleDateFormat(String pattern)

使用给定的模式和默认FORMAT locale的默认日期格式符号构造一个SimpleDateFormat。

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("y-M-d");
System.out.println(formatter.format(date)); //2024-11-15

2.实例方法

simpleDateFormat.applyLocalizedPattern(String pattern)

将给定的本地化模式字符串应用于此日期格式。

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
formatter.applyLocalizedPattern("G y/M/d  H:m:s");
String format = formatter.format(date);
System.out.println(format); //公元 2024/11/15  12:3:36
simpleDateFormat.applyPattern(String pattern)

将给定的模式字符串应用于此日期格式。

Date date = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
formatter.applyPattern("G y/M/d  H:m:s");
String format = formatter.format(date);
System.out.println(format); //公元 2024/11/15  12:4:33
simpleDateFormat.format(Date date)

将给定的Date格式化为日期/时间字符串。

Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat();
String formatString = format.format(date);
System.out.println(formatString); //2024/11/15 14:04
simpleDateFormat.parse(String text)

解析字符串中的文本以生成Date 。

SimpleDateFormat sdf = new SimpleDateFormat("y M d");
Date date1 = sdf.parse("1999 11 10");
System.out.println(date1); //Wed Nov 10 00:00:00 GMT+08:00 1999
simpleDateFormat.toPattern()

返回描述此日期格式的模式字符串。

SimpleDateFormat sdf = new SimpleDateFormat("y M d");
String pattern = sdf.toPattern();
System.out.println(pattern); //y M d

ZoneId

1.静态方法

ZoneId.getAvailableZoneIds()

获取可用区域 ID 的集合。

  ZoneId.getAvailableZoneIds().forEach(System.out::println);//Asia/AdenAmerica/CuiabaEtc/GMT+9Etc/GMT+8Africa/...
2.ZoneId.of(String zoneId)

从 ID 中获取 ZoneId 的实例,确保该 ID 有效且可供使用。

ZoneId zoneId = ZoneId.of("Europe/Berlin");
System.out.println(zoneId); //Europe/Berlin
3.ZoneId.systemDefault()

获取系统默认时区。

ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId); //GMT+08:00

2.实例方法

zoneId.getId()
ZoneId zoneId = ZoneId.of("Europe/Berlin");
String id = zoneId.getId();
System.out.println(id); //Europe/Berlin
zoneId.getRules()

获取允许执行计算的此 ID 的时区规则。

ZoneId zoneId = ZoneId.systemDefault();
ZoneRules rules = zoneId.getRules();
System.out.println(rules);  //ZoneRules[currentStandardOffset=+08:00]
zoneId.normalized()

规范化时区 ID,尽可能返回Zoneoffset。

ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId); //GMT+08:00
ZoneId normalized = zoneId.normalized();
System.out.println(normalized); //+08:00

3.LocalDateTime类

1.静态方法

LocalDateTime.from(TemporalAccessor temporal)

从时间对象中获取 LocalDateTime 的实例。

LocalDateTime from = LocalDateTime.from(LocalDateTime.now());
System.out.println(from);   //2024-11-15T17:19:41.525652400
LocalDateTime.now()

从默认时区的系统时钟获取当前日期时间。

LocalDateTime now = LocalDateTime.now();
System.out.println(now);    //2024-11-15T17:22:07.922862300
LocalDateTime.of(int year, int month,int dayOfMonth, int hour, int minute)
LocalDateTime localDateTime = LocalDateTime.of(2024, 10, 20, 10, 11);
System.out.println(localDateTime);  //2024-10-20T10:11


LocalDate today = LocalDate.now();
LocalTime now = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.of(today, now);
LocalDateTime.parse(CharSequence text, DateTimeFormatter formatter)

使用特定格式化程序从文本字符串中获取LocalDateTime的实例。

LocalDateTime parse = LocalDateTime.parse("2007-12-03T10:15:30");
System.out.println(parse);  //2007-12-03T10:15:30


DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
LocalDateTime parse = LocalDateTime.parse("2024/10/10 10:10:10",dtf);
System.out.println(parse);  //2024-10-10T10:10:10

2.实例方法

localDateTime.format(DateTimeFormatter formatter)

使用指定的格式化程序格式化此日期时间。

DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy");
LocalDateTime localDateTime = LocalDateTime.of(2024, 10, 20, 10, 11);
String format = localDateTime.format(dtf);
System.out.println(format); //20/10/2024
localDateTime.getDayofMonth()

获取一月中的第几天

localDateTime.getDayOfWeek()

获取这天属于周几

localDateTime.getDayOfYear()

获取这是一年中的第几天

LocalDateTime localDateTime = LocalDateTime.of(2024, 10, 20, 10, 11);
int dayOfMonth = localDateTime.getDayOfMonth();
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
int dayOfYear = localDateTime.getDayOfYear();
System.out.println(dayOfMonth);  //20
System.out.println(dayOfWeek);  //SUNDAY
System.out.println(dayOfYear);  //294
localDateTime.getHour()
localDateTime.getMinute()
localDateTime.getMonth()

使用 Month 枚举获取月份字段。

localDateTime.getMonthValue()

获取从 1 到 12 的月份字段。

localDateTime.getSecond()
loacalDateTime.getYear()
LocalDateTime now = LocalDateTime.of(2024,11,15,8,20,25);
int hour = now.getHour();
int minute = now.getMinute();
Month month = now.getMonth();
int monthValue = now.getMonthValue();
int second = now.getSecond();
int year = now.getYear();
        
System.out.println(hour);   //8
System.out.println(minute); //20
System.out.println(month);  //NOVEMBER
System.out.println(monthValue); //11
System.out.println(second); //25
System.out.println(year);   //2024
localDateTime.isAfter(ChronoLocalDateTime<?> other)

检查此日期时间是否在指定的日期时间之后。

localDateTime.isBefore(ChronoLocalDateTime<?> other)

检查此日期时间是否早于指定的日期时间。

localDateTime.isEqual(ChronoLocalDateTime<?> other)
LocalDateTime now = LocalDateTime.now();
LocalDateTime time = now.minusDays(1);

boolean after = time.isAfter(now);
boolean before = time.isBefore(now);
boolean equal = time.isEqual(now);
System.out.println(after);  //false
System.out.println(before); //true
System.out.println(equal);  //false
localDateTime.minusDay(long days)

返回此 LocalDateTime 的副本,并减去指定的天数。

localDateTime.minusHours(long hours)
localDateTime.minusMinutes(long minutes)
localDateTime.minusMonths(long months)
LocalDateTime now = LocalDateTime.now();
LocalDateTime localDateTime = now.minusDays(1);
System.out.println(localDateTime);  //2024-11-14T18:43:29.180464500
 localDateTime.plusSeconds(long seconds)

返回此 LocalDateTime 的副本,并添加了指定的秒数。

localDateTime.plusWeeks(long weeks)
localDateTime.plusYears(long years)
LocalDateTime now = LocalDateTime.now();
LocalDateTime localDateTime = now.plusYears(1);
System.out.println(localDateTime);  //2025-11-15T18:45:43.662536
localDateTime.toLocalDate()

获取此日期时间的 LocalDate 部分。

localDateTime.toLocalTime()

获取此日期时间的 LocalTime 部分。

LocalDateTime now = LocalDateTime.now();
LocalDate localDate = now.toLocalDate();
LocalTime localTime = now.toLocalTime();

System.out.println(localDate);  //2024-11-15
System.out.println(localTime);  //18:48:34.857250900
localDateTime.until(Temporal endExclusive, TemporalUnit unit)

根据指定的单位计算到另一个日期时间的时间量。

LocalDateTime now = LocalDateTime.now();
long until = now.until(now.minusDays(1), ChronoUnit.HOURS);
System.out.println(until); //-24
localDateTime.withDayOfMonth(int dayOfMonth)
localDateTime.withMonth(int month)
localDateTime.withYear(int year)

返回此 LocalDateTime 的副本,并更改年份。

LocalDateTime now = LocalDateTime.now();
LocalDateTime localDateTime = now.withDayOfMonth(1).withMonth(1).withYear(2000);
System.out.println(localDateTime);  //2000-01-01T18:54:24.879526600


原文地址:https://blog.csdn.net/cwtlw/article/details/143785231

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!