如何在unix日期的日期编号上添加后缀?
我会解释一下.我有一个TextMate包snippit,写出今天的日期.它使用unix日期和格式.这是代码:
`date +%A` `date +%d` `date +%B` `date +%Y`
它输出:
2010年3月22日星期一
我想将后缀添加到当天(st,nd,rd和th),如下所示:
2010年3月22日星期一
据我所知,unix日期格式中没有本机函数,就像在PHP(j)中一样.我如何在unix中实现这一目标?一天复杂的正则表达式?
我在Linux机器上有类似的东西(Ubuntu 8.10).我不认为它适用于Solaris,我测试的一台机器不允许在%后面使用_字符以避免用0填充字段.非填充允许日期返回1而不是01(01st doesn看起来不错,与第一名相比.
我使用shell函数(再次,你的操作系统或shell版本可能不像我定义函数的方式)命名为DaySuffix,然后将该函数作为日期调用的一部分调用.功能本身相当hacky,我敢肯定有更好的方法来做到这一点但它适用于我.请注意11,12和&的特殊情况. 13 – 你必须爱上英语!
#!/bin/sh DaySuffix() { if [ "x`date +%-d | cut -c2`x" = "xx" ] then DayNum=`date +%-d` else DayNum=`date +%-d | cut -c2` fi CheckSpecialCase=`date +%-d` case $DayNum in 0 ) echo "th" ;; 1 ) if [ "$CheckSpecialCase" = "11" ] then echo "th" else echo "st" fi ;; 2 ) if [ "$CheckSpecialCase" = "12" ] then echo "th" else echo "nd" fi ;; 3 ) if [ "$CheckSpecialCase" = "13" ] then echo "th" else echo "rd" fi ;; [4-9] ) echo "th" ;; * ) return 1 ;; esac } # Using consolidated date command from chris_l # Also using %-d instead of %d so it doesn't pad with 0's date "+%A %-d`DaySuffix` %B %Y"