将人类可读的日期从 Epoch 转换为变量

Posted

技术标签:

【中文标题】将人类可读的日期从 Epoch 转换为变量【英文标题】:Getting human readable date from Epoch into variable 【发布时间】:2012-06-16 19:10:54 【问题描述】:

好的,这可能是一个非常基本的问题;但是,我刚刚回到 Linux 的马鞍上。

我有一个变量,它保存一个称为 pauseTime 的 Epoch 时间。 我需要该变量成为人类可读的(类似于 2012-06-13 13:48:30)。

我知道我可以输入

date -d @133986838 //just a random number there

这将打印类似的东西。但我需要让变量保存人类可读的日期,而不是纪元时间......我尝试的所有事情都不断出错。关于如何做到这一点的任何想法?

【问题讨论】:

【参考方案1】:

这样做:

VARIABLENAME=$(date -d @133986838)

然后

export VARIABLENAME

或在 Bash 中直接执行:

export VARIABLENAME=$(date -d @133986838)

如果要格式化,请使用通常的 ISO 格式:

export ISODATE=$(date -d @133986838 +"%Y-%m-%d %H:%M:%S")
# or
EPOCHDATE=133986838
export ISODATE=$(date -d @$EPOCHDATE +"%Y-%m-%d %H:%M:%S")

+ 背后的格式在man date 中有说明。

注意:$() 是反引号的现代形式。 IE。将命令的输出捕获到变量中。然而,$() 使一些事情变得更容易,最显着的是逃避其中的规则。因此,如果你的 shell 理解它,你应该总是更喜欢它而不是反引号。

【讨论】:

谢谢,我尝试过类似的方法......但是,按照你的方法,我意识到我从未在循环结束时清除过变量。导致它在下一次传递时出错。谢谢,这解决了我的问题。 为什么建议他导出变量? 为什么要导出变量。我几乎可以肯定这没有必要。子进程是否需要查看?那将是这样做的唯一理由。有些人习惯性地这样做,他们不应该这样做。 @jordanm:简单,因为它更通用。我不希望他最终期望该变量可以从问题中未提及的其他上下文中使用。当然,这是可选的。但在没有更多上下文的情况下,我坚持我推荐export 的决定:) @jordanm:非常有建设性。好样的!你问我为什么这样做,我有道理。您甚至没有暗示您为什么认为在任何地方都普遍使用的“坏习惯”,而是通过否决来回答。如果你没有注意到第一个代码 sn-p 完全没有export(这也是有原因的)。但是,当然,随心所欲。

以上是关于将人类可读的日期从 Epoch 转换为变量的主要内容,如果未能解决你的问题,请参考以下文章

将日期从人类可读格式转换为纪元失败

如何使用人类可读的日期格式将BSON转换为JSON

以人类可读格式转换纪元时间

将 JSON 纪元时间转换为本地人类可读日期

将 Epoch 时间戳转换为 sql server(人类可读格式)

如何将字符串时间戳更改为人类可读的日期格式? [复制]