【问题标题】:Bash time format HH:MM in 12 hour format AM/PMBash 时间格式 HH:MM 12 小时格式 AM/PM
【发布时间】:2016-09-06 21:13:58
【问题描述】:

我正在尝试使用此代码以 AM / PM 格式打印时间:

 #!/bin/bash
 while [[ $# -gt 0 ]]
  do
  key="$1"


  case $key in
  --AMPM| --ampm)
  while true;
  do
   #Time in AMPM format:
   echo $(date +"%r")
   sleep 1s;
   clear;
done
esac
done

我明白了:HH:MM:SS 我想得到这个:HH:MM

我怎样才能改变代码来做到这一点?或者为什么它不起作用?

【问题讨论】:

  • %r 等价于%I:%M:%S %p,为什么你认为它不应该显示秒?
  • 如果您只想要小时、分钟和上午/下午,您需要做什么似乎应该很明显。

标签: bash shell date unix time


【解决方案1】:

如果你至少使用bash 4.2,你甚至不需要date

printf '%(%I:%M %p)T\n'

【讨论】:

    【解决方案2】:

    格式化日期输出:

    date +"%I:%M %p"
    date +"%I:%M %P"
    

    地点:

    %I     hour (01..12)
    %M     minute (00..59)
    %p     locale's equivalent of either AM or PM; blank if not known
    %P     like %p, but lower case
    

    【讨论】:

    • 它现在打印出 HH:MM 但不是 AM 或 PM
    • 然后这样做:date +"%I:%M %p"
    【解决方案3】:

    你可以只替换以下行

    echo $(date +"%r")
    

    echo $(date +"%r" | sed -e 's/\([0-9][0-9]:[0-9][0-9]\):[0-9][0-9]/\1/')
    

    【讨论】:

    • echo 有什么用? :-D 另外,正如其他人指出的那样:date +%I:%M
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 2021-02-17
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    相关资源
    最近更新 更多