加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 在unix中格式化日期以在日期包含后缀(st,nd,rd和t

发布时间:2020-12-13 22:53:36 所属栏目:百科 来源:网络整理
导读:如何在unix日期的日期编号上添加后缀? 我会解释一下.我有一个TextMate包snippit,写出今天的日期.它使用unix日期和格式.这是代码: `date +%A` `date +%d` `date +%B` `date +%Y` 它输出: 2010年3月22日星期一 我想将后缀添加到当天(st,nd,rd和th),如下所示
如何在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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读