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);
    }
}

注意事项

Java如何获取当前星期几?

  • 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如何获取当前星期几?

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

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

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

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

    Java如何获取当前星期几?

    • 通过 Locale 参数切换语言(如Locale.US输出”Monday”)。

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

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

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/29411.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月18日 09:57
下一篇 2025年6月18日 10:08

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN