Java / Python / PHP / Golang / Swift / Ruby 如何判断周六和周日周末

判断是否为周末看似简单,易错点在于各语言/库对“星期”的数字编码不同。请先确认所用 API 的编码,再实现判断逻辑。

对比表(星期编码)

语言/库 常用 API 周六 周日
Go time.Time.Weekday() 6 0
Python date.weekday() 5 6
Python(ISO) date.isoweekday() 6 7
Java 8+ LocalDate.getDayOfWeek() 6 7
PHP DateTime::format('N') 6 7
PHP(备选) date('w') 6 0
Swift Calendar.isDateInWeekend(_:) - -
Swift(备选) component(.weekday, ...) 7 1
Ruby Date#wday 6 0

提示:

实现代码(可直接复用)

Go

package weekend

import "time"

// 周日=0,周六=6
func IsWeekend(t time.Time) bool {
    wd := t.Weekday()
    return wd == time.Saturday || wd == time.Sunday
}

Python

from datetime import date

# 周一=0,周日=6
def is_weekend(d: date) -> bool:
    return d.weekday() >= 5  # 5=周六, 6=周日

Java(java.time)

import java.time.DayOfWeek;
import java.time.LocalDate;

public final class Weekend {
    private Weekend() {}

    public static boolean isWeekend(LocalDate d) {
        DayOfWeek day = d.getDayOfWeek();
        return day == DayOfWeek.SATURDAY || day == DayOfWeek.SUNDAY;
    }
}

PHP

<?php
// 1=周一 … 7=周日
function is_weekend(DateTimeInterface $dt): bool {
    return (int)$dt->format('N') >= 6; // 6=周六, 7=周日
}

Swift

import Foundation

// 根据 Calendar/Locale 自动识别周末(多数地区为周六/周日)
func isWeekend(_ date: Date, calendar: Calendar = .current) -> Bool {
    calendar.isDateInWeekend(date)
}

Ruby

require 'date'

# 周日=0,周六=6
def weekend?(d)
  w = d.wday
  w == 0 || w == 6
end

注意事项

结论

先确认 API 的星期编码或直接使用更安全的“内置周末”判断(如 Swift 的 isDateInWeekend),再以独立、可测试的函数封装逻辑,并显式处理时区/本地化,即可得到一致、可预测的结果。