游乐游手机版
首页/编程语言/文章详情

Java中LocalDate的getDayOfWeek方法获取星期几枚举的详细使用说明

时间:2026-07-15 18:49
Java8中LocalDate的getDayOfWeek()返回类型安全的DayOfWeek枚举,可调用getDisplayName()获取中文或英文名称,getValue()获取ISO-8601数值(周一为1,周日为7)。需注意不同地区周起始日差异,该枚举支持switch语句和枚举比较,便于日期处理。

要在 Java 8 中获取一个日期的星期几,最直接的方式就是调用 LocalDate.getDayOfWeek()。它返回的是 java.time.DayOfWeek 枚举,而不是数字或字符串,类型安全且语义清晰。拿到这个枚举之后,可以进一步转成中文、英文名称,或者获取 ISO-8601 标准下的数值(周一为 1,周日为 7)。支持 switch 语句和直接枚举比较,用起来非常顺手。

Ja va中 LocalDate getDayOfWeek 怎么获取星期几 Enum

直接获取 DayOfWeek 枚举

Java 8 的 LocalDate 提供了 getDayOfWeek() 方法,返回标准的 java.time.DayOfWeek 枚举实例(如 MONDAYTUESDAY 等)。有几个关键点值得注意:

  • 返回值本身就是枚举,不是数字也不是字符串,类型安全,语义一目了然。
  • 不需要额外解析或映射,绕开了手动处理 1~7 时常见的歧义(比如周一是 1 还是 7 的问题)。
  • 举个例子:LocalDate.now().getDayOfWeek() 可能返回 DayOfWeek.WEDNESDAY,直接就能用。

常用操作:转为中文、数字或英文名

虽然枚举用起来很舒服,但最终展示给用户时往往需要中文或英文名称。枚举自带的方法就能搞定:

  • dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.CHINA) → 输出“周三”。
  • dayOfWeek.getDisplayName(TextStyle.FULL, Locale.US) → 输出“Wednesday”。
  • dayOfWeek.getValue() → 返回 1(周一)到 7(周日),完全符合 ISO-8601 标准。

注意周起始日差异

DayOfWeek 严格遵循 ISO-8601:周一是一周的第一天(值为 1),周日是第七天(值为 7)。这和部分地区习惯(比如美国以周日为一周开始)并不一致。这里有两个容易踩的坑:

  • 千万别拿 Calendar.SUNDAY 来类比,两者的数值和含义完全不兼容。
  • 如果业务要求“周日为第一天”,需要自己做映射。一个常见的做法是:(dayOfWeek.getValue() % 7) + 1,这样周日=1,周一=2,依此类推。

简单判断星期几的写法

利用枚举的可读性和对 switch 的天然支持,判断星期几可以写得非常清晰:

  • switch (localDate.getDayOfWeek()) { case SATURDAY: case SUNDAY: ... } 直接处理周末。
  • localDate.getDayOfWeek() == DayOfWeek.FRIDAY 直接比较,语义明确,一看就知道是判断周五。
  • 尽量避免用 localDate.getDayOfWeek().getValue() == 5 这种写法,可读性差,而且容易写错数值。

整体来说,这功能不复杂,但容易忽略一个关键点:拿到的就是枚举,用好它自带的方法和语义,比自己造轮子要可靠得多。

来源:https://www.php.cn/faq/2818490.html
上一篇Java InputStreamReader的ready方法判断可读字符原理 下一篇自动化测试项目发送带附件邮件报告的方法
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Linux route命令详解:查看与修改IP路由表
编程语言 · 2026-07-15

Linux route命令详解:查看与修改IP路由表

route命令源自net-tools工具包,用于查看和修改Linux内核IP路由表,但自2009年起已废弃,现代推荐使用iproute命令。由于历史惯性,route仍在生产环境大量存在,且仅能操作main表,需注意新发行版默认未安装。

Python部署Scikit-learn模型为FastAPI微服务
编程语言 · 2026-07-15

Python部署Scikit-learn模型为FastAPI微服务

部署Scikit-learn模型为FastAPI微服务时,需用joblib加载模型,请求体应为二维数组,并添加输入校验(类型转换、维度检查、NaN过滤),生产环境使用uvicorn多worker启动,配合错误处理与日志记录,确保服务稳定高效。

CentOS系统中实现Golang日志自动轮转的配置方法
编程语言 · 2026-07-15

CentOS系统中实现Golang日志自动轮转的配置方法

在CentOS上使用logrotate管理Golang应用日志轮转:安装后编写配置文件,设置每天轮转、保留7份、压缩、不处理空日志,创建新日志权限640;手动测试配置无误后通过cron每日自动执行,实现日志按天切分、压缩与清理。

如何高效解决SQL中IN子句超过1000个元素的限制
编程语言 · 2026-07-15

如何高效解决SQL中IN子句超过1000个元素的限制

针对Oracle等数据库IN子句1000项上限,可通过子查询、分批执行、EXISTS关联子查询等方案突破限制,兼顾查询性能与可维护性,避免字符串拼接反模式,同时提升SQL灵活性与数据库兼容性。

CentOS Java日志记录速度优化与性能提升指南
编程语言 · 2026-07-15

CentOS Java日志记录速度优化与性能提升指南

在CentOS环境下优化Java日志记录速度,需采用Log4j2异步日志解耦业务线程,生产环境日志级别设为WARN或ERROR,配合日志轮转与SSD存储;调整缓冲区大小、简化格式化、优化JVM堆与GC策略,并利用无锁设计避免锁竞争。通过监控工具定位瓶颈,分布式系统可引入集中式日志收集。