Answers:
为了获得当前时间戳而不是定义固定变量的时间,技巧是使用函数而不是变量:
#!/bin/bash
# Define a timestamp function
timestamp() {
date +"%T"
}
# do something...
timestamp # print timestamp
# do something else...
timestamp # print another timestamp
# continue...
如果您不喜欢%T
说明符给出的格式,则可以将接受的其他时间转换说明符组合在一起date
。对于GNU date
,您可以在以下官方文档中找到这些说明符的完整列表:https : //www.gnu.org/software/coreutils/manual/html_node/Time-conversion-specifiers.html#Time-conversion-specifiers
date +"%Y-%m-%d_%H-%M-%S"
如果要获取unix时间戳,则需要使用:
timestamp=$(date +%s)
%T
会给你时间 与%H:%M:%S
(通过http://www.cyberciti.biz/faq/linux-unix-formatting-dates-for-display/)相同
date
。但是,我也赞成“正确”的答案。我不是在找那个,但这是对原始问题的更好答案,对我也真的很有用。
DATE=`date "+%Y%m%d"`
DATE_WITH_TIME=`date "+%Y%m%d-%H%M%S"` #add %3N as we want millisecond too
echo $(date +"%Y-%m-%dT%T.%3N%z")
可是我不能让它在一台Mac终端工作。如何在Mac中执行相同操作。谢谢
ISO 8601格式(2018-12-23T12:34:56
)比UNIX时间戳更具可读性。但是,在某些操作系统:
上,文件名不能包含。因此,我建议改用这样的方法:
2018-12-23_12-34-56
您可以使用以下命令以这种格式获取时间戳:
TIMESTAMP=`date +%Y-%m-%d_%H-%M-%S`
这是我在许多应用程序中看到的格式。与此相关的另一个好处是,如果文件名以此开头,则可以按字母顺序对它们进行排序,并且可以按日期对它们进行排序。
TZ=UTC date +...
可以通过使用UTC时间戳使其更易于移植
使用命令替换:
timestamp=$( date +%T )
您可以使用
timestamp=`date --rfc-3339=seconds`
以以下格式提供 2014-02-01 15:12:35-05:00
反引号(`
)字符将导致对它们之间的内容进行评估,并将结果包括在该行中。 date --help
还有其他选择。
touch $timestamp
将产生两个文件。
echo "$(timestamp): something happened"
。