Ste*_*ski 6 osx freebsd date non-gnu
在 Unix Bash 命令行上,我想使用基本操作系统(例如 No Perl 或 Python)计算 1125 天前的日期。
在运行GNU Date 的系统上,我可以执行以下操作:
ubuntu $ date --date="1125 days ago"
Wed Nov 7 15:12:33 PST 2007
Run Code Online (Sandbox Code Playgroud)
FreeBSD 或 MacOSX 系统不附带 GNU Date,也不支持像“X 天前”这样的值。
freebsd81 $ date --date="+1125 days ago"
date: illegal option -- -
Run Code Online (Sandbox Code Playgroud)
我可以在 Mac 或 FreeBSD 系统上计算几天前的日期,但这仅限于几天:
# Today is really Dec 6, 2010. 4 days ago it was:
macosx $ TZ=GMT+96 date +%Y%m%d
20101202
# But that doesn't work if I want to see the date 8 days ago:
macosx $ TZ=GMT+192 date +%Y%m%d
20101206
Run Code Online (Sandbox Code Playgroud)
我可以在非 GNU 系统上计算旧日期而无需深入研究 Perl 或 Python 之类的工具吗?或者我必须使用更强大的脚本语言?
好吧,你可以做一些偷偷摸摸的事情,比如:
$ echo "`date +%s` - (1125 * 24 * 60 *60)" |bc 1194478815 $日期-r 1194478689 2007 年 11 月 7 日,星期三 18:38:09 -0500
在 OpenBSD 上测试(绝对不是基于 gnu 的日期),并且似乎有效。
分步骤分解:
$日期+%s 1291679934
$ echo "1125 * 24 * 60 *60" | 公元前 97200000
从另一个中减去一个 (1291679934 - 97200000) = 1194478815
使用新的 unixtime (1194478815) 打印漂亮的日期
$日期-r 1194478689 2007 年 11 月 7 日,星期三 18:38:09 -0500
作为替代方案,您可以在solaris 上执行此操作来打印日期*:
/bin/echo "0t1194478815>Y\n<Y=Y" |adb
* 引用自http://www.sun.com/bigadmin/shellme/
此外,Solaris 上用于从 date 命令**获取当前时间戳的替代方法是:
/usr/bin/truss /usr/bin/date 2>&1 | nawk -F= '/^time()/ {gsub(//,"",$2);print $2}'
** 引用自http://www.commandlinefu.com/commands/view/7647/unix-timestamp-solaris
归档时间: |
|
查看次数: |
6074 次 |
最近记录: |