如何在shell脚本中将给定日期转换为自定义日期

时间:2015-02-16 09:12:16

标签: shell unix

我是shell脚本的新手。 我需要将给定日期的格式更改为自定义格式,例如我在变量中的日期格式为MM / DD / YY HH:MM:SS但我希望日期格式为MM / DD / YYY HH:MM:SS这是一年四位数。 我们可以更改sys日期格式,但我需要在变量中使用相同的格式。 我的代码如下

START_DATE="12/20/14 05:59:01"
yr=`echo $START_DATE | cut -d ' ' -f1 | cut -d '/' -f3`
yr_len=`echo $yr | wc -c`
if [ $yr_len -lt 4 ]
then
    tmp_yr="20${yr}";
else
    1=1;
fi
ln=`echo $tmp_yr|wc -c`

在此之后,我按照想要的格式重新制作了相同的日期。

有人可以帮助我

此致 西。

2 个答案:

答案 0 :(得分:1)

使用GNU日期:

date -d'02/16/15 09:16:04' "+%m/%d/%Y %T"

产生

02/16/2015 09:16:04

这就是你想要的。有关格式的详细信息,请参阅man date;有关一些很好的示例,请参见this question

答案 1 :(得分:0)

一个选项可能是在awk中使用日期/时间功能。这是一个oneliner:

echo '02/16/15 09:16:04' | sed 's\[/:]\ \g' | awk '{d0=$3+2000FS$1FS$2FS$4FS$5FS$6; d1=mktime(d0);print strftime("%m/%d/%Y %T", d1) }'

输出是:

02/16/2015 09:16:04

您可以在https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html

中找到更多strftime格式