You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unix环境下日历技术需求:打印指定年月的日期及对应星期

在Unix环境下打印指定年月的日期及对应星期

嘿,在Unix环境下实现这个需求其实挺简单的,我给你分享几个实用的方法,从快速查看的命令到可复用的脚本都有:

方法1:用cal快速查看(简洁直观)

如果只是想快速浏览指定年月的完整日历(自带日期和星期对应关系),直接用系统自带的cal命令就够了,格式是cal <月份> <年份>。比如你要查2018年2月:

cal 2 2018

输出会是这样的:

February 2018
Su Mo Tu We Th Fr Sa
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28

表头就是星期几,每行对应一周的日期,一目了然。

方法2:自定义Bash脚本(逐行输出日期+星期)

如果需要每行单独显示一个日期和对应的完整星期名称,写个小脚本就很方便。这个脚本还做了基本的参数校验,同时适配Linux(GNU date)和macOS/BSD(BSD date)的差异:

创建一个名为print_dates.sh的文件,内容如下:

#!/bin/bash

# 检查参数数量是否正确
if [ $# -ne 2 ]; then
    echo "用法: $0 <年份> <月份>"
    echo "例子: $0 2018 2"
    exit 1
fi

year=$1
month=$2

# 校验月份是否在1-12之间
if ! [[ $month =~ ^[1-9]$|^1[0-2]$ ]]; then
    echo "错误: 月份必须是1-12之间的数字"
    exit 1
fi

# 校验年份是否为有效数字
if ! [[ $year =~ ^[0-9]+$ ]]; then
    echo "错误: 年份必须是数字"
    exit 1
fi

# 获取当月的总天数
days=$(cal "$month" "$year" | awk 'NF>6 {print $NF}' | tail -1)

# 循环打印每天的日期和星期
for day in $(seq 1 "$days"); do
    # 补零格式化日期(比如2变成02)
    formatted_day=$(printf "%02d" "$day")
    formatted_month=$(printf "%02d" "$month")
    date_str="$year-$formatted_month-$formatted_day"

    # 判断当前系统的date命令类型
    if date --version >/dev/null 2>&1; then
        # Linux系统(GNU date)
        date -d "$date_str" +"%Y-%m-%d %A"
    else
        # macOS/BSD系统(BSD date)
        date -jf "%Y-%m-%d" "$date_str" +"%Y-%m-%d %A"
    fi
done

给脚本添加执行权限:

chmod +x print_dates.sh

运行示例:

./print_dates.sh 2018 2

输出会是这样的逐行格式:

2018-02-01 Thursday
2018-02-02 Friday
2018-02-03 Saturday
2018-02-04 Sunday
2018-02-05 Monday
...
2018-02-28 Wednesday

方法3:单行命令实现(无需脚本)

如果不想写脚本,用seq、cal和date组合成单行命令也能搞定:

Linux系统(GNU date):

seq 1 $(cal 2 2018 | awk 'NF>6 {print $NF}' | tail -1) | xargs -I{} date -d "2018-02-{}" +"%Y-%m-%d %A"

macOS/BSD系统:

seq 1 $(cal 2 2018 | awk 'NF>6 {print $NF}' | tail -1) | xargs -I{} date -jf "%Y-%m-%d" "2018-02-{}" +"%Y-%m-%d %A"

这个命令的逻辑是先获取当月总天数,生成1到总天数的数字序列,再逐个传给date命令格式化输出。

内容的提问来源于stack exchange,提问作者Kharabela Bhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:39:08