PHP日期函数可以添加月份中日期的序数后缀,例如“st”、“nd”、“rd”等。是否可以使用date
Linux 中的命令实现相同的功能?
答案1
我认为常见的date
实现无法自行完成此操作。您可以请求一些带有您选择的“通配符”的自定义格式,然后对其进行处理。示例:
LC_ALL=C date '+%B %eXX %Y' | sed -e 's/11XX/11th/' -e 's/12XX/12th/' -e 's/13XX/13th/' -e 's/1XX/1st/' -e 's/2XX/2nd/' -e 's/3XX/3rd/' -e 's/XX/th/'
我使用了LC_ALL=C
该命令,因此无论语言环境如何都可以进行测试。
要查看此sed
命令如何使用“通配符”处理各种日期,请运行以下命令:
sed -e 's/11XX/11th/' -e 's/12XX/12th/' -e 's/13XX/13th/' -e 's/1XX/1st/' -e 's/2XX/2nd/' -e 's/3XX/3rd/' -e 's/XX/th/' << EOF
October 1XX 2019
October 2XX 2019
October 3XX 2019
October 4XX 2019
October 10XX 2019
October 11XX 2019
October 12XX 2019
October 13XX 2019
October 14XX 2019
October 20XX 2019
October 21XX 2019
October 22XX 2019
October 23XX 2019
October 24XX 2019
October 30XX 2019
October 31XX 2019
EOF
记事本%e
中单个数字前面带有空格字符。您可能想要也可能不想要这个。 的一些实现date
可能允许您避免这种情况(date
来自 GNU coreutils?使用%-d
)。对我的示例的一个可移植修复是sed
使用进行扩展-e 's/ / /'
。
答案2
我的解决方案是管道:
sed -e 's/ of/th of/' -e 's/2th/2nd/' -e 's/\([^1]\)3th/\13rd/' -e 's/\([^1]\)1th/\11st/'