Welcome 微信登录

首页 / 操作系统 / Linux / Shell 贴士: Unix 时间到字面

我的工作需要天天跟报表数据打交道,在交换的文件中,一般时间的字段内容都是 Unix 时间。为了检查数据的正确性,不可避免地需要转换 Unix 时间到人类可读的字面时间。下面想分享的是一个在 Shell 下转换 Unix 时间到字面的小方法。这个小 shell 函数可以放在 ~/.bashrc 中方便快捷使用。# 转换 Unix 时间到本地时间字符串function ctime(){date -d "UTC 1970-01-01 $1 secs"}使用方法很简单:$ ctime 1234567890Sat Feb 14 07:31:30 CST 2009对 date 命令熟悉的同学会说,date 不是已经有直接转 Unix 时间的参数了吗?$ date -d @1234567890Sat Feb 14 07:31:30 2009但是不好意思的是,小弟有时候用的 date 程序好老,不支持 @ 符号。$ date --versiondate (coreutils) 5.2.1Written by David MacKenzie.Copyright (C) 2004 Free Software Foundation, Inc.This is free software; see the source for copying conditions.There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.PS: 写完这篇博文,我又想到了一个有趣的事情,既然很多 Linux 64 位版本的 time_t 已经是 long long 格式了,那么 date 命令有没有 year 2038 问题呢?下面是 date (coreutils) 5.2.1 在 64 位服务器上的尝试结果:$ date +%s -d "Tue Jan 19 11:14:07 CST 2038"2147483647$ date +%s -d "Tue Jan 19 11:14:08 CST 2038"2147483648$ date +%s -d "Tue Jan 19 11:14:09 CST 2999"32473710849$ ctime 2147483647Tue Jan 19 11:14:07 CST 2038$ ctime 2147483648Sat Dec 14 04:51:44 LMT 1901$ ctime 32473710849Mon Mar 28 07:33:53 LMT 1910看来字面时间和 Unix 时间之间互转存在着问题啊!但是用 Ubuntu 11.04 的 date (GNU coreutils) 8.5 尝试就不存在这个问题了。<!-- .entry-content -->小白初用Ubuntu—优化系统设置篇磊科NW330 Linux下驱动安装记相关资讯      shell 
  • Linux入门学习:认识shell和bash  (03月25日)
  • SHELL中创建临时文件的方法  (07/22/2014 10:45:00)
  • shell技巧分享  (03/08/2014 07:15:33)
  • 使用shell进行数学运算  (04/14/2015 06:14:58)
  • Shell在大数据时代的魅力:从一道百  (07/21/2014 07:26:42)
  • shell用户个人配置文件  (10/30/2013 20:10:00)
本文评论 查看全部评论 (0)
表情: 姓名: 字数