当前位置:首页 > 后端开发 > 正文

Java如何获取当前星期几?

Java中可通过 Calendar类或Java 8的 LocalDate判断星期几,使用 Calendar.DAY_OF_WEEK获取数字(1为周日,7为周六),或调用 LocalDate.getDayOfWeek()直接获得英文星期枚举值,灵活转换即可。

使用 java.util.Calendar(Java 7及以下)

import java.util.Calendar; public class WeekdayExample { public static void main(String[] args) { // 创建Calendar实例 Calendar calendar = Calendar.getInstance(); // 获取星期几(注意:周日=1, 周一=2, ..., 周六=7) int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); // 转换为可读字符串 String weekdayName = ""; switch (dayOfWeek) { case Calendar.SUNDAY: // 1 weekdayName = "星期日"; break; case Calendar.MONDAY: // 2 weekdayName = "星期一"; break; case Calendar.TUESDAY: // 3 weekdayName = "星期二"; break; case Calendar.WEDNESDAY: // 4 weekdayName = "星期三"; break; case Calendar.THURSDAY: // 5 weekdayName = "星期四"; break; case Calendar.FRIDAY: // 6 weekdayName = "星期五"; break; case Calendar.SATURDAY: // 7 weekdayName = "星期六"; break; } System.out.println("今天是: " + weekdayName); } }

注意事项

  • Calendar 的星期索引从周日(1)开始,周六(7)结束。
  • 需显式处理时区(默认使用系统时区)。


使用 java.time 包(Java 8+推荐)

Java 8引入的java.time API更简洁且线程安全:

import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.TextStyle; import java.util.Locale; public class WeekdayExampleJava8 { public static void main(String[] args) { // 获取当前日期 LocalDate today = LocalDate.now(); // 获取星期几(DayOfWeek枚举) DayOfWeek dayOfWeek = today.getDayOfWeek(); // 直接输出中文星期 String weekdayName = dayOfWeek.getDisplayName(TextStyle.FULL, Locale.CHINESE); System.out.println("今天是: " + weekdayName); // 星期一 // 获取数字表示(周一=1, 周日=7) int dayNumber = dayOfWeek.getValue(); System.out.println("星期数字: " + dayNumber); } }

优势

  • 直接支持本地化(如Locale.CHINESE)。
  • 清晰的枚举值(DayOfWeek.MONDAY)。
  • 避免Calendar的索引歧义(周一=1,周日=7)。


处理特定日期

若需判断任意日期的星期几:

import java.time.LocalDate; public class SpecificDateExample { public static void main(String[] args) { // 指定日期(2025年10月1日) LocalDate date = LocalDate.of(2025, 10, 1); // 获取星期几 String weekdayName = date.getDayOfWeek() .getDisplayName(TextStyle.FULL, Locale.CHINESE); System.out.println("2025年国庆是: " + weekdayName); // 输出:星期日 } }


关键注意事项

  1. 时区问题

    Java如何获取当前星期几? 第1张

    Java如何获取当前星期几? 第2张

    • LocalDate.now() 使用系统默认时区。

    • 跨时区应用需用 ZonedDateTime 指定时区:

      Java如何获取当前星期几? 第3张

      import java.time.ZoneId; import java.time.ZonedDateTime; ZonedDateTime zonedTime = ZonedDateTime.now(ZoneId.of("Asia/Shanghai")); DayOfWeek day = zonedTime.getDayOfWeek();
    • 星期的数字表示

      • java.time:周一=1, 周日=7(符合ISO标准)。
      • Calendar:周日=1, 周六=7(易混淆)。
      • 语言本地化

        • 通过 Locale 参数切换语言(如Locale.US输出”Monday”)。
          • Java 7及以下:用 Calendar,但需注意索引偏移和时区。
          • Java 8+推荐 java.time,语法简洁、符合标准,且支持本地化。
          • 实际开发中,优先使用 DayOfWeek 枚举,避免硬编码数字,提高代码可读性。

          引用说明:本文代码基于Oracle官方Java文档,java.time包设计参考ISO 8601日期标准,时区数据来源于IANA时区数据库。

0