不用标点符号显示当前日期和时间

例如,我希望以下列格式显示当前日期和时间:

yyyymmddhhmmss

我该怎么做呢? 似乎大多数的日期格式都有 -/:等等。

125845 次浏览

给你:

date +%Y%m%d%H%M%S

正如 man date在接近顶部所说的那样,您可以像下面这样使用 date命令:

date [OPTION]... [+FORMAT]

也就是说,您可以给它一个格式参数,从 +开始。 你也许能猜到我使用的格式化符号的含义:

  • %Y代表年份
  • %m是一个月
  • %d是白天的
  • 诸如此类

您可以在 man date中找到这个符号和其他格式化符号。

Shell 脚本中的一个简单示例

#!/bin/bash


current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

不带标点符号格式:-+% Y% m% d% H% M% S
标点符号:-+% Y -% m -% d% H:% M:% S

如果你正在使用 Bash,你也可以使用以下命令之一:

printf '%(%Y%m%d%H%M%S)T'       # prints the current time
printf '%(%Y%m%d%H%M%S)T' -1    # same as above
printf '%(%Y%m%d%H%M%S)T' -2    # prints the time the shell was invoked

您可以使用 Option-v varname将结果存储在 $varname中,而不是将其打印到 stdout:

printf -v varname '%(%Y%m%d%H%M%S)T'

Date 命令总是在 subshell 中执行(例如在单独的进程中) ,printf 是一个内置命令,因此速度更快。

没有标点符号 (正如@Burusthman 提到的) :

current_date_time="`date +%Y%m%d%H%M%S`";
echo $current_date_time;

办事处:

20170115072120

标点符号 :

current_date_time="`date "+%Y-%m-%d %H:%M:%S"`";
echo $current_date_time;

办事处:

2017-01-15 07:25:33

使用 参数展开(需要 bash 4.4或更新版本)做到这一点的有趣/有趣的 方法:

${parameter@operator} - P operator

展开是一个字符串,它是将参数值作为提示字符串展开的结果。

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251