【问题标题】:How to get yesterday and day before yesterday in linux?如何在linux中获取昨天和前天?
【发布时间】:2014-02-26 13:37:00
【问题描述】:

我想在变量中获取 sysdate -1 和 sysdate -2 并回显它。我正在使用下面的查询,它给出今天的日期作为输出。

#! /bin/bash
tm=$(date +%Y%d%m)
echo $tm

如何获取昨天和前天的日期?

【问题讨论】:

  • date -d"yesterday"date -d"yesterday -1 day" 对你有用吗?
  • 请使用YYYY-mm-dd xkcd.com/1179

标签: linux shell unix


【解决方案1】:

这是另一种方式,

昨天,

date -d '-1 day' '+%Y%d%m'

前天,

date -d '-2 day' '+%Y%d%m'

【讨论】:

  • 请注意,BSD date 命令(就像 macOS 一样)为此使用了 -v 开关。所以date -v '-1d' '+%Y%d%m' 会做你想做的事。
  • 健全版(iso 8601):date -v '-1d' '+%Y-%m-%d'
  • 正是我想要的
【解决方案2】:
  1. 昨天的日期

    YES_DAT=$(date --date=' 1 days ago' '+%Y%d%m')
    
  2. 前天日期

    DAY_YES_DAT=$(date --date=' 2 days ago' '+%Y%d%m')
    

对于您可以使用低于一个默认值的任何日期,它需要 1 天。如果它在它的前一天通过值

ANY_YES_DAT=$(date --date=' $1 days ago' '+%Y%d%m')

【讨论】:

    【解决方案3】:

    你可以通过这个得到昨天的日期:

    date -d "yesterday 13:00 " '+%Y-%m-%d'
    

    和前天这样:-

    date -d "yesterday-1 13:00 " '+%Y-%m-%d'
    

    【讨论】:

    • yesterday-1yesterday -1 在 RHEL 7.1 中不起作用,仅在 date -d "yesterday -1 day"
    【解决方案4】:

    对于不提供-v 选项的旧版 BSD 日期(例如在旧版 macOS 上),您可以通过从当前纪元中减去 86400 秒(一天中的秒数)来获得昨天的日期。

    date -r $(( $(date '+%s') - 86400 ))
    

    显然,您可以将昨天的当天减去 2 * 86400 等。

    编辑:添加对旧 macOS 版本的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-04
      • 1970-01-01
      • 1970-01-01
      • 2012-01-02
      • 2011-06-14
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      相关资源
      最近更新 更多