Получить месяц и день с даты

Я пытаюсь получить месяц и дату с даты в Linux. это мой код

# Set Date 
D="2013/01/17"

# get day 
DD=$(D+"%d")

# get day 
MM=$(D+"%M")

# Day 
echo "Day:"$DD
echo "Month:"$MM

Ответ 1

В sh или bash:

D="2013/01/17"
DAY=$(date -d "$D" '+%d')
MONTH=$(date -d "$D" '+%m')
YEAR=$(date -d "$D" '+%Y')

echo "Day: $DAY"
echo "Month: $MONTH"
echo "Year: $YEAR"

Ответ 2

Или, если вы хотите использовать текущую дату, используйте date +%Y/%m/%d. Если вы хотите их отдельно, вы можете сделать что-то вроде этого:

read YYYY MM DD <<<$(date +'%Y %m %d')
echo "Today is Day:$DD Month:$MM"

Более простой подход:

DD=$(date +%d)
MM=$(date +%m)
echo "Today is Day:$DD Month:$MM"

Однако в этом случае вы выполняете date дважды, что неэффективно, и если вам действительно не повезло, дата может измениться между этими двумя строками;)

Ответ 3

kent$  D="2013/01/17"

kent$  awk -F/ '{print "year:"$1,"Month:"$2,"Day:"$3}'<<<$D
year:2013 Month:01 Day:17

если вы хотите только месяц или день, просто оставьте там 2 или 3 доллара, удалите те части, которые вам не нужны.

Изменить

kent$  year=$(awk -F/ '{print $1}' <<<$D)                                                                                                                                   

kent$  echo $year
2013