RESULTS:
original = Apr 28 07:50:01
epoch conv = 1524916201
epoch to human readable time stamp = 20180428_075001
或作为函数:
# -- Converts from human to epoch or epoch to human, specifically "Apr 28 07:50:01" human.
# typeset now=$(date +"%s")
# typeset now_human_date=$(convert_cron_time "human" "$now")
function convert_cron_time() {
case "${1,,}" in
epoch)
# human to epoch (eg. "Apr 28 07:50:01" to 1524916201)
echo $(date -d "${2}" +"%s")
;;
human)
# epoch to human (eg. 1524916201 to "Apr 28 07:50:01")
echo $(date -d "@${2}" +"%b %d %H:%M:%S")
;;
esac
}
6条答案
按热度按时间wztqucjr1#
你要找的是
date --date='06/12/2012 07:21:22' +"%s"
。记住,这里假设你使用的是GNU coreutils,因为--date
和%s
字符串都是GNU扩展。POSIX没有指定这两种格式,所以即使在POSIX兼容的系统上也没有可移植的方法来进行这样的转换。有关
date
的其他版本,请参阅相应的手册页。注意:bash
--date
和-d
选项需要US或ISO8601格式的日期,即mm/dd/yyyy
或yyyy-mm-dd
,而不是UK、EU或任何其他格式。lyr7nygr2#
对于Linux,运行以下命令:
对于macOS,请运行以下命令:
b0zn9rqh3#
很多这样的答案过于复杂,也缺少如何使用变量。这是你在标准Linux系统上更简单的方法(如前所述,对于Mac用户,日期命令必须进行调整):
示例脚本:
结果:
或作为函数:
h5qlskok4#
只要确定您要使用的时区。
最流行的用法是使用机器时区。
但是如果你想传递UTC日期时间,并且你想要正确的时区,你需要添加
-u
标志,否则你需要从你的本地时区转换它。vawmfj5a5#
在bash中将 * date time string * 转换为 * epoch * 的有效方法
避免 * 无用的重复 * 分叉,为了使这个翻译快得多...
我们可以运行
date -f - +%s
作为后台进程,而不是为每个翻译运行一个fork ...简介
常用语法:
工作很好,但如果重复运行会变重!
在这篇文章中,你会发现
bc
、rot13
、sed
...)。快速演示
它必须输出当前的 * UNIXTIME *。
以及:
您可以选中
echo $ans
,将"now"
替换为"2019-25-12 20:10:00"
等等...可选地,在 * date subprocess * 的要求结束后,您可以:
原帖(详细说明)
与其运行1 * fork * by date来转换,不如只运行
date
一次,然后使用相同的过程进行所有转换(这样可以更快)!:样品:
那现在看看:
(may回答类似这样的问题:
这是一次处决!
使用 * 长时间运行 * 子进程
我们只需要一个 * fifo *:
(Note:当进程运行并且所有描述符都打开时,我们可以安全地删除fifo的文件系统条目。
那么现在:
我们可以建立一个小函数:
或使用 * my *
newConnector
函数具有 * 连接**
MySQL/MariaDB
、PostgreSQL
* 和 *SQLite
* 的 * 功能 *...您可以在GitHub或我的网站上找到它们的不同版本:download或show中的任意一个。
nwlqm0z16#