【问题标题】:Yesterdays and Next date from given date using ksh on AIX在 AIX 上使用 ksh 从给定日期开始的昨天和下一个日期
【发布时间】:2018-03-08 11:42:11
【问题描述】:

我正在尝试编写一个脚本来计算 date-1 和 date+1 after

从变量中读取日期

回显2017-09-30 |读取 YYYY MM DD

如何在 AIX OS 上尝试将下一个日期打印为 2017-10-01。

这是其中的一段代码

date ()
{
   DAY=$D1
   TODAY=$D1
   DAY1=$D1
   echo $DAY1| read YYYY MM DD
   let DD=DD+1
   DD=`printf %02d $DD`
   if [[ $DD -eq 0 ]] then
   let MM=MM-1
   MM=`printf %02d $MM`
   if [[ $MM -eq 0 ]] then
   let YYYY=YYYY-1
   let MM=12
   let DD=31
   fi
   DD=`cal $MM $YYYY|grep . |fmt -1|tail -1`
  fi
  NEXTDAY=`echo $YYYY-$MM-$DD`
  echo $NEXTDAY
  }

【问题讨论】:

  • 您好,欢迎来到 StackOverflow。请参考stackoverflow.com/help/how-to-ask,了解如何提出正确的问题并根据指南改进您的问题。
  • 您的 ksh 是否支持日期/时间打印,例如 printf "%(%s)T\n" 2017-09-30
  • 你的awk支持mktime吗?
  • @WalterA 不支持

标签: unix ksh aix


【解决方案1】:

明天:

date --date='tomorrow'
date --date='1 day'

昨天:

date --date='yesterday'
date --date='1 day ago'

如何将时间/日期格式保存到 shell 变量中?

$ NOW=$(date +"%m-%d-%Y")

使用 echo 命令显示变量:

$ echo $NOW

【讨论】:

  • 感谢 Zappe,它不是来自系统的日期,而是来自变量
【解决方案2】:

我昨天在https://stackoverflow.com/a/21283578/3220113回答了

你可以用同样的方法拥有昨天和明天,记住夏令时:

# Tomorrow
echo "$(TZ=GMT-30 date +%Y-%m-%d)
$(TZ=GMT-20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | head -1

# Yesterday
echo "$(TZ=GMT+30 date +%Y-%m-%d)
$(TZ=GMT+20 date +%Y-%m-%d)" | grep -v $(date +%Y-%m-%d) | tail -1

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
相关资源
最近更新 更多