2014-10-01 1723 views
0

我想根据日期获取当前月份。 到目前为止它是工作的罚款下面的命令 -在Linux中使用`date`获取当前月份

cur_mon=`date --date="$report_date" '+%m' -d 'now'` 
cur_year=`date --date="$report_date" '+%y' -d 'now'` 
echo cur_mon and cur_year =${cur_mon} and ${cur_year} 

$ REPORT_DATE现在是9月30日2014年

这是给我的输出 - cur_mon和CUR_YEAR = 和14

让我知道是否有人知道原因以及解决方案。此外,这也可能造成一年中的问题。如果日期是2014年12月31日。

+0

请解释为什么你的输出不正确,月份是十月份,年份是2014年(这里)。 – 2014-10-01 18:58:25

+0

也许你应该看看日期手册页。例如,如果你想要全年,而不仅仅是两个最后的数字,你应该使用%Y而不是%y。如果您想将月份作为缩写名称,则应使用%b而不是%m。 – 2014-10-01 19:04:18

+0

我没有使用当前日期或系统日期。我使用的是$ Report_date变量的日期,其值为2014年9月30日。它应该返回9作为当前月份而不是10. – user0801 2014-10-02 19:17:48

回答

0

我想我看到你的问题,你试图描述你的日期两次。一次使用--date =“$ report_date”,第二次使用-d现在。只有后者才有效。这就是为什么你看到10而不是9的原因。

+0

似乎您指出正确。但是,你能告诉我如何在没有--date的情况下使用,因为我想使用变量$ report_date.echo中的日期$ report_date cur_mon ='date --date =“$ report_date”'+%m'-d'now ' – user0801 2014-10-02 20:00:52

+0

为此输出是 - 20140930 mon = 10 – user0801 2014-10-02 20:02:00

+0

只需将一个--date/-d输出。 'date --date =“$ report_date”'+%m''将会像'date -d'一样工作$ report_date“'+%m'' – 2014-10-02 20:42:53

-1

尝试awk '{print $2}' <(date)它应该选择名义上是月份的日期输出中由空格分隔的第二个元素。

相关问题