[转]shell中按格式显示日期

本文介绍如何使用Shell脚本进行日期的格式化输出及简单的日期计算,包括获取当前日期时间、计算前一天的日期等实用示例。
在shell编程中,将日期按照指定格式输出是常见的任务。我们看一下一个最常见的例子:
now=`date "+%Y%m%d%H%M%S%N"`

对于初学者来讲,要注意几点:
1).如果不指定格式,直接将date的结果赋给now,那么格式为now=`date`,一定要注意date上面的两个符号,为键盘上面1左边的那个符号;
2).date后面“+“前面要加空格,date和格式字符串之间要加空格分开;
3).后面的格式字符串就不用多讲了,区别的是%Y表示为2009,则%y表示为09,其它的就不用说了。
4).字符串的连接中间不用符号,写在一起即可。

5).如果一个字符串中间包含变量,则字符串应该用双引号引起来,而不是单引号。如"abc${now}def".这个样子。

6).shell的赋值等号左右是没有空格的,是紧凑格式。




yy=`date +%Y`
mm=`date +%m-1|bc`
dd=`date +%d`
[ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1`
aaa=`cal $mm $yy`
dd=`echo $aaa|awk '{print $NF}'`
echo $yy$mm$dd




显示昨天的日期:


y_year=`date +%Y`
m_month=`date +%m`
m_day=`date +%d`
#y_year=2005
#m_month=08
#m_day=01
#The date test sucess so as:
#y_year=2005;m_month=03;m_day=01 y_year=2005;m_month=01;m_day=01 y_year=2005;m_month=08;m_day=01
#######mine shell#####################
############bash redhat as 3 test success
date_cal=`cal $m_month $y_year`
if [ $m_day -le 1 ];then
m_month2=`expr $m_month-1|bc`
if [ $m_month2 -le 0 ];then
m_month=12
y_year=`expr $y_year-1|bc`
date_cal=`cal $m_month $y_year`
else
date_cal=`cal $m_month2 $y_year`
m_month=$m_month2
fi
m_day=`echo $date_cal |awk '{print $NF}'`
else
m_day=`expr $m_day-1|bc`
fi
echo $y_year$m_month$m_day

Shell中进行时间格式换通常涉及到使用`date`命令以及`awk`、`sed`等文本处理工具。`date`命令在Linux和Unix系统中用来显示和设置系统日期时间,而`awk`、`sed`等工具则可以对`date`命令的输出结果进行格式化的处理。 下面是一个简单的例子,展示如何将日期时间从一种格式换为另一种格式: ```shell # 设置时间变量(以当前系统时间为例子) current_time=$(date +"%Y-%m-%d %H:%M:%S") # 格式:将%Y-%m-%d %H:%M:%S格式换为YYYYMMDDhhmmss格式 formatted_time=$(date -d "$current_time" +"%Y%m%d%H%M%S") # 打印换后的时间 echo $formatted_time ``` 在这个例子中,首先使用`date`命令获取当前时间,并以`%Y-%m-%d %H:%M:%S`的格式存储在变量`current_time`中。然后,使用`date -d`选项来解析这个时间字符串,并使用`+%Y%m%d%H%M%S`来输出换后的时间格式。 如果需要进行更复杂的换或者没有`date`命令支持的格式,可以结合使用`awk`、`sed`等工具来进一步处理字符串。例如,如果需要将时间格式从`YYYY-MM-DD HH:MM:SS`换为`DD/MM/YYYY HH:MM`,可以使用以下命令: ```shell # 假设这是原始时间字符串 original_time="2023-03-15 12:34:56" # 使用awk进行格式换 formatted_time=$(echo $original_time | awk -F'-' '{print $3"/"$2"/"$1" "$4":"$5":"$6}') # 打印换后的时间 echo $formatted_time ``` 在这个例子中,`awk`命令通过设置字段分隔符为`-`(`-F'-'`),然后按照新的格式拼接输出。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值