如何在Shell中格式化并打印当前日期时间 - jbranchaud/til项目技巧
til :memo: Today I Learned 项目地址: https://gitcode.com/gh_mirrors/ti/til
日期时间基础命令
在Shell环境中,date
命令是最常用的日期时间处理工具。默认情况下,直接运行date
命令会输出完整的系统日期和时间信息:
$ date
Fri Jan 22 13:45:44 CST 2021
这种格式包含了星期、月份、日期、时间、时区和年份信息。虽然完整,但在实际应用中,我们往往需要更简洁或特定格式的日期时间表示。
格式化日期时间输出
date
命令的强大之处在于它支持自定义输出格式。通过+
参数后跟格式字符串,可以灵活控制输出内容:
$ date +"%Y/%m/%d %H:%M:%S"
2021/01/22 13:47:55
这个例子中,我们使用了以下格式控制符:
%Y
:四位数的年份(如2021)%m
:两位数的月份(01-12)%d
:两位数的日期(01-31)%H
:24小时制的小时(00-23)%M
:分钟(00-59)%S
:秒(00-60)
常用格式控制符
除了上述基本格式外,date
命令还支持多种格式控制符:
-
日期相关:
%a
:缩写的星期名(如Mon)%A
:完整的星期名(如Monday)%b
:缩写的月份名(如Jan)%B
:完整的月份名(如January)%d
:月份中的第几天(01-31)%j
:一年中的第几天(001-366)%u
:星期几(1-7,1表示星期一)
-
时间相关:
%I
:12小时制的小时(01-12)%p
:AM或PM%T
:时间(等价于%H:%M:%S)%s
:自1970-01-01 00:00:00 UTC以来的秒数(时间戳)
-
其他:
%Z
:时区缩写(如CST)%%
:百分号本身
实用函数封装
在实际脚本开发中,我们经常需要重复使用特定格式的日期时间。可以将其封装为函数提高代码复用性:
now() {
echo "当前时间: $(date +'%Y/%m/%d %H:%M:%S')"
}
调用这个函数时,会输出格式化的当前时间:
$ now
当前时间: 2023/07/15 14:30:22
进阶应用示例
-
生成时间戳:
timestamp() { date +"%Y%m%d%H%M%S" }
-
日志时间格式:
log_time() { date +"[%Y-%m-%d %H:%M:%S]" }
-
文件备份命名:
backup_name() { echo "backup_$(date +%Y%m%d).tar.gz" }
时区处理技巧
如果需要处理不同时区的时间,可以使用TZ
环境变量临时改变时区:
$ TZ=Asia/Shanghai date
2023年07月15日 星期六 22:30:00 CST
日期计算
date
命令还支持日期的加减计算:
# 明天的日期
$ date -d "tomorrow" +%Y-%m-%d
# 一周后的日期
$ date -d "next week" +%Y-%m-%d
# 10天后的日期
$ date -d "10 days" +%Y-%m-%d
总结
掌握date
命令的格式化技巧可以极大提升Shell脚本处理日期时间的能力。无论是简单的日志记录,还是复杂的定时任务,合理的日期时间格式都能让脚本更加清晰可靠。建议读者根据实际需求,创建自己的日期时间工具函数库,提高开发效率。
til :memo: Today I Learned 项目地址: https://gitcode.com/gh_mirrors/ti/til
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考