我需要在bash中收到一个代码,它会以这种格式提供当前日期:
Sunday, 1^st January 2016
(上标为st
,nd
,rd
或th
)。
接收上标的方式是什么?
我会感谢任何帮助。
答案 0 :(得分:1)
=LEFT(A1,FIND("/",A1)-1)&RIGHT(A1,FIND("/",A1,FIND("/",A1)+1))
程序没有任何产生序号的转换,因此您需要在其后面替换后缀:
date
请注意,大多数英语风格指南建议不要将序数后缀写为上标;如果你真的坚持它,你可以把它当作一种练习!
另请注意,通过两次调用#!/bin/bash
d=$(date +%e)
case $d in
1?) d=${d}th ;;
*1) d=${d}st ;;
*2) d=${d}nd ;;
*3) d=${d}rd ;;
*) d=${d}th ;;
esac
date "+%A, $d %B %Y"
,我们可能会在午夜冒险。我们可以通过单独查找当前时间然后格式化它来避免这种情况:
date
或者,将日期(一次)读入单独的变量,然后在shell中格式化它们:
#!/bin/bash
s=$(date +@%s)
d=$(date -d $s +%e)
case $d in
1?) d=${d}th ;;
*1) d=${d}st ;;
*2) d=${d}nd ;;
*3) d=${d}rd ;;
*) d=${d}th ;;
esac
date -d $s "+%A, $d %B %Y"
答案 1 :(得分:0)
我希望这会有所帮助:
#!/bin/bash
# get the day of the month to decide which postfix should be used
dayOfMonth=$(date +%d)
# Choose postfix
case "$dayOfMonth" in
1)
postfix="st"
;;
2)
postfix="nd"
;;
3)
postfix="rd"
;;
*)
postfix="th"
;;
esac
# Generate date string
myDate=$(date +%A,\%d\^$postfix\ %B\ %Y)
echo $myDate
<强>解释强>
记住评论。
日期命令输出可以从命令行格式化,字符串以“+”开头,包含varius格式选项,例如%d表示每月的某一天。
在终端输入:
男人约会
获取手册并检查FORMAT部分。
或者如果你想在午夜时分运行你的应用程序,就像Toby Speight警告的那样。只打电话约会一次:
#!/bin/bash
# Generate date template
dateTpl=$(date +%A,\ \%d\^postfix\ %B\ %Y)
# get the day of the month from the template, to decide which postfix should be use
dayOfMonth=$(echo $dateTpl | cut -d ' ' -f 2 | sed 's/\^postfix//g' )
# Choose postfix
case "$dayOfMonth" in
1)
postfix="st"
;;
2)
postfix="nd"
;;
3)
postfix="rd"
;;
*)
postfix="th"
;;
esac
# Generate date string from template
myDate=$(echo $dateTpl | sed "s/postfix/$postfix/g")
echo $myDate