我在Linux機器上有類似的工作(Ubuntu 8.10)。我認爲它不適用於Solaris,我測試的一臺機器不允許在%之後使用_字符以避免用0填充該字段。非填充允許日期返回1而不是01(01st不會對第一名看起來不錯)。
我使用shell函數(同樣,您的操作系統或shell版本可能不像我定義函數的方式)名爲DaySuffix,然後將該func作爲日期調用的一部分調用。該func本身是相當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"
實際上沒有回答你的問題,但我會鞏固日命令: 日期 「+%A%d%B%Y」 - >週一2010年3月22 – zigdon 2010-03-22 20:30:28
如果我是你,我會編寫一個小的PHP腳本(因爲你已經知道如何在那裏做),並執行它。我不知道,如果可以在目標系統上安裝PHP。 – 2010-03-22 20:48:32