天天看点

[原]好玩的Linux,关于时间cal命令

我们都知道,在Linux中,可以通过cal命令来查看日历。Cal怎么用呢,我们可以man一下,可以看到如下结果:

 我们可以看到cal命令的基本用法如下:cal [-smjy13] [[[day] month] year] 

当然如果不加指定参数的话,会显示当前的月份情况。

其常用参数如下:

-1      Display single month output.  (This is the default.)

-3      Display prev/current/next month output.

-s      Display Sunday as the first day of the week.

-m      Display Monday as the first day of the week.

-j      Display Julian dates (days one-based, numbered from January 1).

-y      Display a calendar for the current year.

-V      Display version information and exit.

我对其逐个简单解释一下:

-1    会把当前单月显示输出(这个也是默认值)

-3   会显示3个月,分别是上一个月,本月,和下个月

-s   会把星期天作为每周的第一天显示

-m    会把星期一作为每周的第一天显示

-j   会显示【天文学】儒略日(从公历1月1日开始的时间,今天是一年里的第多少天)

-y   显示当前一整年的日历

-V   会显示当前的版本信息

( 每个参数的使用方法,已经进行了说明,这里就不贴图了。)

看了这些命令和解释,其实很简单吧。简单试验一下,相信大家肯定就知道怎么用了。后面我补充一下这些参数配合使用的效果,比如:

1.cal -jy  可以将本年度的每一天从年初到年为表上序号,从1~365计数的形式显示,如下:

2.cal -3j  可以将本月与上一月、下一月的顺序计数儒略日时间,如下:

3.cal 5 2013 可以显示2013年5月份的情况

4.当然这里还有一个实际有用的小技巧:比如你想知道前年某一天(eg.2011-11-14)和今天相隔多少天,那么我们可以这么做:

  1)通过 cal -j 14 11 2011 可以得到2011-11-14在当年的天文学日

  2)通过cal看下今天的时间

  3)然后很简单就可以计算出来了,另外计算可以通过bc,此略。

5.说到这里,我们也可以再尝试一下:cal 9 1752 ,可以发现结果如下图:

我们可以发现,竟然9月2号过去就是9月14号。有人说这个是不是Linux cal的bug,其实不是的,那么中间的时间去哪里了呢?这里引出一个故事,大家看了就明白了:

1752年9月,大英帝国极其所属美洲殖民地的恺撒历法被格里高利教皇历法所取代。由于恺撒历法比格里高利历法迟11天,因此9月2日当天改历法后,次日须为9月14日。现行的公历是格利戈里历法,这个历法的是1582年教皇格利戈里根据恺撒大帝引进的算法改进的。它采用的是闰年制也就是现行的制度,不过有一个需要注意的地方就是,这个历法并不是连续的,中间缺少了11天。1752年9月2日之后的那一天并不是1752年9月3日,而是1752年9月14日。也就是说,从1752年9月3日到1752年9月13日的11天并不存在。抹掉这11天是由英国议会做出的决定。所以要计算某年每个月的天数的,除了要考虑是否是闰年以外,还要考虑1752年的9月。 (这段话出自:互动百科)

呵呵,看来Linux还有很多奇妙的事情等着挖掘。

---2013年5月6日17:25:19

转载请注明出处:http://www.cnblogs.com/haochuang/ 8年IT工作经验,5年测试技术与管理,2年产品与项目管理,曾参与过云计算\云存储\车联网产品研发工作; 业余自媒体人,有技术类垂直微信公众号;如有招聘或求职方面需求,请Mail to [email protected] ;或通过 QQ:363573922 微博:@念槐聚 联系;

继续阅读