shell 脚本中的 YYYY-MM-DD 格式日期
我尝试在 bash shell 脚本中使用 $(date)
,但是,我希望日期采用 YYYY-MM-DD
格式。
我如何得到这个?
I tried using $(date)
in my bash shell script, however, I want the date in YYYY-MM-DD
format.
How do I get this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(18)
将打印 YYYY-MM-DD
Will print YYYY-MM-DD
您可以将日期设置为环境变量,稍后您可以使用它
或
You can set date as environment variable and later u can use it
or
尝试使用此代码获得简单的人类可读时间戳:
输出:
Try this code for a simple human readable timestamp:
Output:
在 bash (>=4.2) 中,最好使用 printf 的内置日期格式化程序(bash 的一部分)而不是外部
date
(通常是 GNU 日期)。请注意,由于 Windows 上的fork()
调用缓慢,因此在 Cygwin 中调用子 shell 会出现性能问题。因此:
在 bash (<4.2) 中:
其他可用的日期格式可以从 日期手册页(用于外部非 bash 特定命令):
In bash (>=4.2) it is preferable to use printf's built-in date formatter (part of bash) rather than the external
date
(usually GNU date). Note that invoking a subshell has performance problems in Cygwin due to a slowfork()
call on Windows.As such:
In bash (<4.2):
Other available date formats can be viewed from the date man pages (for external non-bash specific command):
尝试:
$(date +%F)
%F
选项是%Y-%m-%d
的别名Try:
$(date +%F)
The
%F
option is an alias for%Y-%m-%d
你可以这样做:
You can do something like this:
可以
或者如果您还想要 time:
用于删除
输出之间的冒号 (:)
output
Or if you also want time:
can be used to remove colons (:) in between
output
您正在寻找 ISO 8601 标准日期格式,因此如果您有 GNU 日期(或任何比 1988 年更现代的日期命令) )只需执行:
$(date -I)
You're looking for ISO 8601 standard date format, so if you have GNU date (or any date command more modern than 1988) just do:
$(date -I)
输出将为
2015-06-14
。The output would be
2015-06-14
.在最近的 Bash(版本 ≥ 4.2)中,您可以使用带有格式修饰符
%(strftime_format)T
的内置printf
:printf
速度更快比date
因为它是 Bash 内置命令,而date
是外部命令。此外,
printf -v date ...
比date=$(printf ...)
更快,因为它不需要分叉子 shell。With recent Bash (version ≥ 4.2), you can use the builtin
printf
with the format modifier%(strftime_format)T
:printf
is much faster thandate
since it's a Bash builtin whiledate
is an external command.As well,
printf -v date ...
is faster thandate=$(printf ...)
since it doesn't require forking a subshell.我使用以下公式:
查看
date
的手册页,还有许多其他有用的选项:I use the following formulation:
Checkout the man page for
date
, there is a number of other useful options:如果您希望年份采用两位数字格式,例如 17 而不是 2017,请执行以下操作:
if you want the year in a two number format such as 17 rather than 2017, do the following:
我用了下面的方法。感谢所有方法/答案
I used below method. Thanks for all methods/answers
我使用
$(date +"%Y-%m-%d")
或$(date +"%Y-%m-%d %T")
与时间和小时数。I use
$(date +"%Y-%m-%d")
or$(date +"%Y-%m-%d %T")
with time and hours.每当我遇到这样的任务时,我最终都会回
想起时间格式选项的所有可能性。
Whenever I have a task like this I end up falling back to
to remind myself of all the possibilities for time formatting options.
date +%Y-%m-%dT%H:%M:%S
将打印类似 2023-07-18T11:09:16 的内容,通常称为 RFC-3339
date +%Y-%m-%dT%H:%M:%S
will print something like 2023-07-18T11:09:16 which is generally known as RFC-3339
尝试使用此命令:
输出将类似于:
21-Feb-2021
Try to use this command :
The output would be like:
21-Feb-2021
这里 x 是使用的样本日期 &然后示例显示数据格式以及获取比当前日期多 10 分钟的日期。
Here x is sample date used & then example displays both formatting of data as well as getting dates 10 mins more then current date.