Linux每日一篇 - 29 - date
Linux时间管理神器!掌握date命令,灵活显示和设置系统时间,让时间操作更精准!
date命令是什么?
date命令是Linux中用于显示和设置系统日期和时间的工具,还可以进行日期格式化和时间计算。
基本用法
# 显示当前日期和时间
date
# 以指定格式显示日期
date +"%Y-%m-%d %H:%M:%S"
# 显示UTC时间
date -u
# 设置系统日期和时间
date -s "2023-12-25 10:30:00"
# 显示特定时间戳对应的日期
date -d @1677225600
# 将字符串转换为日期
date -d "2023-12-25"
# 显示相对时间
date -d "tomorrow"
date -d "yesterday"
date -d "next week"
date -d "1 month ago"
实用技巧
# 常用格式化选项:
# %Y - 四位年份 (2023)
# %m - 月份 (01-12)
# %d - 日期 (01-31)
# %H - 小时 (00-23)
# %M - 分钟 (00-59)
# %S - 秒 (00-59)
# %A - 星期全名 (Monday)
# %a - 星期简写 (Mon)
# %B - 月份全名 (January)
# %b - 月份简写 (Jan)
# 生成时间戳
date +%s
# 生成自定义格式的日期
date +"%Y年%m月%d日 %H:%M:%S"
# 生成文件名友好的日期格式
date +"%Y%m%d_%H%M%S"
# 计算日期差
date -d "2023-12-25 + 7 days"
date -d "2023-12-25 - 3 days"
# 显示月份日历
date +"%B %Y" && cal $(date +%Y)
# 比较两个日期
date1=$(date -d "2023-12-01" +%s)
date2=$(date -d "2023-12-25" +%s)
if [ $date1 -lt $date2 ]; then
echo "date1 is earlier than date2"
fi
# 在脚本中使用时间戳
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Script started"
常用场景
# 生成日志文件名
logfile="app_$(date +%Y%m%d_%H%M%S).log"
# 备份文件添加日期后缀
cp config.conf config.conf.$(date +%Y%m%d)
# 显示友好格式的当前时间
date +"%A, %B %d, %Y %I:%M:%S %p"
# 定时任务中使用
# 在crontab中虽然可以直接使用时间字段,但也可以结合date命令
# 0 2 * * * /path/to/script.sh # 每天凌晨2点执行
# 计算脚本执行时间
start_time=$(date +%s)
# 执行一些操作
end_time=$(date +%s)
execution_time=$((end_time - start_time))
echo "脚本执行时间: $execution_time 秒"
# 显示文件修改时间差
file_date=$(stat -c %Y filename)
current_date=$(date +%s)
age_seconds=$((current_date - file_date))
age_days=$((age_seconds / 86400))
echo "文件已创建 $age_days 天"
高级用法
# 转换时区显示
TZ=UTC date
TZ=Asia/Shanghai date
# 解析各种日期格式
date -d "Dec 25 2023"
date -d "25/12/2023"
date -d "2023-12-25 15:30:45"
# 生成时间序列
for i in {1..7}; do
date -d "2023-12-25 + $i day" +"%Y-%m-%d (%A)"
done
# 验证日期有效性
if date -d "2023-02-29" > /dev/null 2>&1; then
echo "日期有效"
else
echo "日期无效"
fi
关于我
全平台同名”汪多多是只猫”,专注分享实用技术教程,让你的IT学习之路更轻松!
关注我,每天一个Linux命令,轻松入门Linux系统!