在 Bash 中获取日期(当前时间前一天)
如何在 Bash 中打印当前时间前一天的日期?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在 Bash 中打印当前时间前一天的日期?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(19)
如果你有 GNU 日期并且我理解正确
或者
if you have GNU date and i understood you correctly
or
如果您有 BSD (OSX)
date
您可以这样做:或者如果您想在任意日期进行日期计算:
If you have BSD (OSX)
date
you can do it like this:Or if you want to do date calculations on an arbitrary date:
MAC OSX
对于昨天的日期:
其中 1d 定义当天减去 1 天。同样,
date -v-1w +%F - 表示上周日期
date -v-1m +%F - 表示上个月日期
如果您有 GNU DATE ,
更多信息:https://www .cyberciti.biz/tips/linux-unix-get-yesterdays-tomorrows-date.html
MAC OSX
For yesterday's date:
where 1d defines current day minus 1 day. Similarly,
date -v-1w +%F - for previous week date
date -v-1m +%F - for previous month date
IF YOU HAVE GNU DATE,
More info: https://www.cyberciti.biz/tips/linux-unix-get-yesterdays-tomorrows-date.html
高级 Bash 脚本指南
有关日期格式的详细信息,请参阅 < a href="http://ss64.com/bash/date.html" rel="noreferrer">日期
Advanced Bash-scripting Guide
For details about the date format see the man page for date
抱歉没有提到我在 Solaris 系统上的情况。
因此,-date 开关在 Solaris bash 上不可用。
我发现我可以通过时区上的小技巧来获取之前的日期。
Sorry not mentioning I on Solaris system.
As such, the -date switch is not available on Solaris bash.
I find out I can get the previous date with little trick on timezone.
好吧,这是一个迟到的答案,但这似乎有效!
Well this is a late answer,but this seems to work!!
或者
or
或许可以使用 Perl 来代替?
或者,使用 nawk 和(ab)使用 /usr/bin/adb:
遇到 这也...疯了!
Use Perl instead perhaps?
Or, use nawk and (ab)use /usr/bin/adb:
Came across this too ... insane!
<代码> <代码>
>
不是很性感,但可能可以完成工作:
由“马丁·克莱顿”答案组成。
Not very sexy but might do the job:
Formated from "martin clayton" answer.
简短回答(GNU 格式):
如果您使用 OSX,但需要创建 GNU 兼容版本,请先安装 coreutils,
然后编辑您的配置文件:
重新启动终端,现在您可以使用 GNU 格式!
short answer (GNU format):
if you are using OSX, but you need create for GNU compatible, install coreutils first
then edit your profile with:
re-start your terminal, and now you able to use GNU format!
如果选择的日期格式是“YYYYMM”,您可以使用正则表达式进行简单的计算:
2020 年 1 月它将返回 201912 ;-)
但是,这只是一个解决方法,当日期没有计算选项并且其他日期解释器选项(例如使用 perl)不可用时;-)
You could do a simple calculation, pimped with an regex, if the chosen date format is 'YYYYMM':
In January of 2020 it will return 201912 ;-)
But, it's only a workaround, when date does not have calculation options and other dateinterpreter options (e.g. using perl) not available ;-)
将昨天的日期(YYYY-MM-DD 格式)放入变量
$yesterday
中。Puts yesterday's date in YYYY-MM-DD format into variable
$yesterday
.DST 感知解决方案:
可以通过操纵时区来更改时钟几个小时。由于夏令时的原因,24小时前可以是今天或前天。
您确定昨天是 20 或 30 小时前。哪一个?好吧,最近的一个不是今天。
bash 需要 echo 命令中使用的 -e 参数,但不适用于 ksh。在 ksh 中,您可以使用不带 -e 标志的相同命令。
当您的脚本将在不同的环境中使用时,您可以使用#!/bin/ksh 或#!/bin/bash 启动脚本。您还可以用换行符替换 \n:
DST aware solution:
Manipulating the Timezone is possible for changing the clock some hours. Due to the daylight saving time, 24 hours ago can be today or the day before yesterday.
You are sure that yesterday is 20 or 30 hours ago. Which one? Well, the most recent one that is not today.
The -e parameter used in the echo command is needed with bash, but will not work with ksh. In ksh you can use the same command without the -e flag.
When your script will be used in different environments, you can start the script with #!/bin/ksh or #!/bin/bash. You could also replace the \n by a newline:
尝试下面的代码,它也处理 DST 部分。
考特西 安斯加·维彻斯
Try the below code , which takes care of the DST part as well.
Courtsey Ansgar Wiechers
对于我的情况,我需要一个便携式解决方案来获取自一小时前的纪元以来的秒数,这在 ubuntu 和 macOS 上都有效:
解释一下:
$(( ))
正在做算术扩展date +%s
似乎是一种可移植的方式来获取以来的秒数希望这有帮助!
For my case I needed a portable solution to get the number of seconds since the epoch one hour ago, and this worked on both ubuntu and macOS:
Explaining this:
$(( ))
is doing an arithmetic expansiondate +%s
seems to be a portable way to get seconds since epochHope this helps!