如何使用Shell脚本从今天的日期中获取上一个星期天的日期?

时间:2019-05-31 03:43:59

标签: bash shell

我想通过将星期几(星期天除外)的今天日期作为输入来打印最后一个星期日的日期,但是如果是星期日,则应该打印今天的日期。我尝试过了

a=`date -dlast-sunday +%Y%m%d`

但是这给出了最后一个日期之前的星期日。

4 个答案:

答案 0 :(得分:4)

与其要求最后一个星期日,不如要求在下一个星期日之前的一周。

$ date +%Y%m%d
20190531
$ date -d'next sunday - 1 week' +%Y%m%d
20190526

就像“最后一个星期日”总是早于当前日期,“下一星期日”也总是早于当前日期。

在我写这个答案的时候是星期五,让我们使用这种技术来询问上周五:

$ date +"%A %F"
Friday 2019-05-31
$ date -d 'next Friday - 1 week' +"%A %F"
Friday 2019-05-31

答案 1 :(得分:1)

请您尝试以下。

cal |
awk -v dat=$(date +%d) '
{
  for(i=1;i<=NF;i++){
    if($i==dat){
      if(i!=1){
         print "Last Sunday is: "$1
      }
      else{
         print "This day itself is Sunday."
      }
    }
  }
}'

答案 2 :(得分:1)

您可以使用import calendar data = pd.read_csv('D:\JimmyGao\Tutorials\WindRose\pattern_freq.csv') df.head() data.columns = ['pattern', 'month', 'freq'] df = pd.melt(data, id_vars = ['month','pattern']) df wsp, wdir = 'value', 'WindDir' plt.figure(figsize = (16,12)) nbcol = 4 nblines = 3 for month, group in df.groupby('month'): ax = plt.subplot(nblines, nbcol, month) group[wsp].hist(bins = 10, ax = ax) ax.set_title(calendar.month_name[month]) ax.set_ylim(0,5) ax.set_xlim(0,50) plt.tight_layout() 选项,通过date命令本身简单地完成此操作,

date -d

您将在其中以date -d "today - $(date -d today +"%u") days" 的形式传递任意日期(以示例为例),它将给出前一个星期日的日期。通过从给定日期(示例中为today)中减去星期几(date -d today +"%u")天数来实现。如果今天是星期日,则可以在检查today之前使用if来简单地输出当前日期。

示例

if [ "$(date -d today +"%u")" -eq '7' ]; then date; else ... fi

答案 3 :(得分:0)

通过获取今天的日期来打印上一个星期日的日期的命令是:

a=$(date -d 'last Sunday ' +"%A %F")
echo $a
相关问题