显示当前日期和时间而不标点


118

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

yyyymmddhhmmss 

我怎么做?这似乎是大多数日期格式自带-/:,等。

Answers:


170

干得好:

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

man date顶部所示,您可以使用以下date命令:

date [OPTION]... [+FORMAT]

也就是说,您可以给它一个格式参数,以开头+。您可能会猜出我使用的格式符号的含义:

  • %Y 是一年
  • %m 是一个月
  • %d 是一天
  • ... 等等

您可以在中找到它以及其他格式符号man date


36

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


2
"`date +%Y-%m-%d %H:%M:%S`"给我一个date: illegal time format
Sinux

6

如果您使用的是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命令将始终在子shell中执行(即在单独的进程中),但printf是内置命令,因此会更快。


对于正在寻找%可以传递哪些选项的进一步文档的任何人,这似乎都在使用该date命令。因此,man date将为您提供可用的选项。
electrovir

4

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

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

O / P:

20170115072120

带标点符号

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

O / P:

2017-01-15 07:25:33

0

使用参数扩展(需要bash 4.4或更新)来执行此操作的有趣/有趣的方式:

${parameter@operator} - P operator

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

$ show_time() { local format='\D{%Y%m%d%H%M%S}'; echo "${format@P}"; }
$ show_time
20180724003251
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.