3

我正在运行一个 shell 脚本,它接受“YYYY-MM-DD”格式的日期。从这个日期输入,我怎样才能分别得到年、月和日?

感谢您提前回复。

4

4 回答 4

7

除了将字符串处理为文本(使用 grep/sed/awk/cut/...),您可以使用 date 命令:

kent$  date -d '2013-09-06' +%Y
2013

kent$  date -d '2013-09-06' +%m
09

kent$  date -d '2013-09-06' +%d
06
于 2013-09-06T08:28:26.450 回答
1

您可以使用一个命令将它们存储在变量中:

read YEAR MONTH DAY < <(date -d '2013-09-06' '+%Y %m %d')
printf "%s\n" "$YEAR" "$MONTH" "$DAY"
于 2013-09-06T08:35:54.567 回答
0

尝试这个 :

dt="2011-2-3"
arr=( $( date --date=$dt "+%Y  %m  %d") )
echo "Year > $arr"
echo "Month > ${arr[1]}"
echo "Month > ${arr[2]}"
于 2013-09-06T08:26:46.180 回答
0

我不想使用date命令,所以我得到了以下代码。它使用 awk,我觉得它更适合这个任务。我假设您想将结果存储在变量中。

inputDate=2017-07-06

year=`echo $inputDate | awk -F\- '{print $1}'`
month=`echo $inputDate | awk -F\- '{print $2}'`
day=`echo $inputDate | awk -F\- '{print $3}'`
于 2017-07-06T14:07:22.180 回答