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 |
a | A.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)!