在 unix 中格式化日期以包含当天的后缀(st、nd、rd 和 th)
如何在 unix 日期的日数字上添加后缀?
我会解释一下。我有一个 TextMate 捆绑片段,可以写出今天的日期。它使用 unix 日期和格式。代码如下:
`date +%A` `date +%d` `date +%B` `date +%Y`
它输出:
Monday 22 March 2010
我想将后缀添加到 day (st, nd 、rd 和 th),如下所示:
2010 年 3 月 22 日星期一
据我所知, 中没有本机函数unix 日期格式,就像 PHP (j) 中的格式一样。我将如何在unix中实现这一点?日期数字的复杂正则表达式?
How can I add the suffix on the day number of a unix date?
I'll explain. I have a TextMate bundle snippit that writes out today's date. It uses unix date and formatting. Here is the code:
`date +%A` `date +%d` `date +%B` `date +%Y`
It outputs:
Monday 22 March 2010
I would like to add the suffix to the day (st, nd, rd and th) like so:
Monday 22nd March 2010
As far as I can see, there is no native function in the unix date formatting, like there is in PHP (j). How would I achieve this in unix? A complicated regex on the day number?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试。
Try.
我在 Linux 机器(Ubuntu 8.10)上有类似的工作。我认为它不适用于 Solaris,我测试的一台机器不允许在 % 后面使用 _ 字符以避免用 0 填充该字段。非填充允许日期返回 1 而不是 01(01st 不与第 1 点相比看起来不太正确)。
我使用名为 DaySuffix 的 shell 函数(同样,您的操作系统或 shell 版本可能不喜欢我定义该函数的方式),然后将该 func 作为日期调用的一部分进行调用。 func 本身相当 hacky,我确信有更好的方法来做到这一点,但它对我有用。请注意 11、12 和 11 的特殊情况。 13 - 你必须热爱英语!
I have something similar working on a Linux machine (Ubuntu 8.10). I don't think it will work with Solaris, the one machine I tested did not allow using a _ character following the % to avoid padding the field with a 0. The non-padding allows date to return 1 instead of 01 (01st doesn't look right versus 1st).
I use a shell function (again, your OS or shell version may not like the way I defined the function) named DaySuffix, then call that func as part of the date call. The func itself is fairly hacky, I'm sure there is a better way to do this but it works for me. Note the special cases for 11, 12, & 13 - you've got to love the English language!