Linux dateコマンドを使用して相対日付に基づいて相対日付を取得するには?

Linux dateコマンドを使用して相対日付に基づいて相対日付を取得するには?

Linux dateコマンドで「10分前を基準にした前月曜日」を取得できますか?

例えば

  • 現在時刻:2016-02-09 00:05:00
  • 予想される結果:2016-02-01 00:00:00

ベストアンサー1

あなたが持っていて、faketimeあなたのものがdate動的にリンクされている場合:

faketime -f -10m date -d 'last monday' '+%F %T'

使用ksh93(組み込みコマンドのみ):

printf '%(%F %T)T\n' "$(printf '%(%Y.%m.%d)T' '10 minutes ago')-0 last monday"

ここが最後なら日曜日最後のものの代わりに月曜日に、次のようにすることができます。

date -d "$(date -d '10 minutes ago' +"%F -%u day")"

または最後の場合土曜日:

date -d "$(date -d '10 minutes ago' +"%F -%w day -1 day")"

しかし結局月曜日にまたは他の曜日には算術演算が必要です。

eval "date -d \"$(date -d '10 minutes ago' +'%F -$(((%u+5)%%7+1)) day')\""

それ以外の場合は、いつでも次のことができます。

d=$(date -d 'last monday'); sleep 600; printf '%s\n' "$d"

;-)

おすすめ記事