python - 为时代换弦

标签 python python-2.7

我正在编写代码,同时检查 getTime1查看字符串是否有效。如果字符串有效,我想将字符串更改为每次 getTime1 时向后退 30 分钟的时间。字符串有效。

示例:getTime1字符串显示12:00AM所以我想将其更改为向后 30 分钟以使其显示 11:30PM 。如果getTime1字符串显示12:30PM ,我想将其更改为向后30分钟以使其显示12:00PM .

这是代码:

getTime1 = self.getControl(344).getLabel()

if day_date >= 0 and day_date <= 6:
    if getTime1 == '12:00AM':
       self.getControl(344).setLabel('11:30PM')
    elif getTime1 == '12:30AM':
        self.getControl(344).setLabel('12:00AM')
    elif getTime1 == '1:00AM':
        self.getControl(344).setLabel('12:30AM')
    elif getTime1 == '1:30AM':
        self.getControl(344).setLabel('1:00AM')
    elif getTime1 == '2:00AM':
        self.getControl(344).setLabel('1:30AM')
    elif getTime1 == '2:30AM':
        self.getControl(344).setLabel('2:00AM')
    elif getTime1 == '3:00AM':
        self.getControl(344).setLabel('2:30AM')
    elif getTime1 == '3:30AM':
        self.getControl(344).setLabel('3:00AM')
    elif getTime1 == '4:00AM':
        self.getControl(344).setLabel('3:30AM')
    elif getTime1 == '4:30AM':
        self.getControl(344).setLabel('4:00AM')
    elif getTime1 == '5:00AM':
        self.getControl(344).setLabel('4:30AM')
    elif getTime1 == '5:30AM':
        self.getControl(344).setLabel('5:00AM')
    elif getTime1 == '6:00AM':
        self.getControl(344).setLabel('5:30AM')
    elif getTime1 == '6:30AM':
        self.getControl(344).setLabel('6:00AM')
    elif getTime1 == '7:00AM':
        self.getControl(344).setLabel('6:30AM')
    elif getTime1 == '7:30AM':
        self.getControl(344).setLabel('7:00AM')
    elif getTime1 == '8:00AM':
        self.getControl(344).setLabel('7:30AM')
    elif getTime1 == '8:30AM':
        self.getControl(344).setLabel('8:00AM')
    elif getTime1 == '9:00AM':
        self.getControl(344).setLabel('8:30AM')
    elif getTime1 == '9:30AM':
        self.getControl(344).setLabel('9:00AM')
    elif getTime1 == '10:00AM':
        self.getControl(344).setLabel('9:30AM')
    elif getTime1 == '10:30AM':
        self.getControl(344).setLabel('10:00AM')
    elif getTime1 == '11:00AM':
        self.getControl(344).setLabel('10:30AM')
    elif getTime1 == '11:30AM':
        self.getControl(344).setLabel('11:00AM')
    elif getTime1 == '12:00PM':
        self.getControl(344).setLabel('11:30AM')
    elif getTime1 == '12:30PM':
        self.getControl(344).setLabel('12:00PM')
    elif getTime1 == '1:00PM':
        self.getControl(344).setLabel('12:30PM')
    elif getTime1 == '1:30PM':
        self.getControl(344).setLabel('1:00PM')
    elif getTime1 == '2:00PM':
        self.getControl(344).setLabel('1:30PM')
    elif getTime1 == '2:30PM':
        self.getControl(344).setLabel('2:00PM')
    elif getTime1 == '3:00PM':
        self.getControl(344).setLabel('2:30PM')
    elif getTime1 == '3:30PM':
        self.getControl(344).setLabel('3:00PM')
    elif getTime1 == '4:00PM':
        self.getControl(344).setLabel('3:30PM')
    elif getTime1 == '4:30PM':
        self.getControl(344).setLabel('4:00PM')
    elif getTime1 == '5:00PM':
        self.getControl(344).setLabel('4:30PM')
    elif getTime1 == '5:30PM':
        self.getControl(344).setLabel('5:00PM')
    elif getTime1 == '6:00PM':
        self.getControl(344).setLabel('5:30PM')
    elif getTime1 == '6:30PM':
        self.getControl(344).setLabel('6:00PM')
    elif getTime1 == '7:00PM':
        self.getControl(344).setLabel('6:30PM')
    elif getTime1 == '7:30PM':
        self.getControl(344).setLabel('7:00PM')
    elif getTime1 == '8:00PM':
        self.getControl(344).setLabel('7:30PM')
    elif getTime1 == '8:30PM':
        self.getControl(344).setLabel('8:00PM')
    elif getTime1 == '9:00PM':
        self.getControl(344).setLabel('8:30PM')
    elif getTime1 == '9:30PM':
        self.getControl(344).setLabel('9:00PM')
    elif getTime1 == '10:00PM':
        self.getControl(344).setLabel('9:30PM')
    elif getTime1 == '10:30PM':
        self.getControl(344).setLabel('10:00PM')
    elif getTime1 == '11:00PM':
        self.getControl(344).setLabel('10:30PM')
    elif getTime1 == '11:30PM':
        self.getControl(344).setLabel('11:00PM')

但问题是 getTime1字符串仅显示 12 小时时间。

我想知道是否有办法减少代码,使其能够使用 6-7 行而不是 97 行?

最佳答案

这个怎么样?

if getTime1 == '12:00AM':
    self.getControl(344).setLabel('11:30PM')
elif getTime1 == '12:00PM':
    self.getControl(344).setLabel('11:30AM')
else:
    ind = getTime1.find(':')
    if getTime1[ind+1:ind+3]=='30':
        getTime1 = getTime1[:ind]+':00'+getTime1[-2:]
        self.getControl(344).setLabel(getTime1)  
    else: 
        getTime1 = str(int(getTime1[:ind])-1)+':30'+getTime1[-2:]
        self.getControl(344).setLabel(getTime1)  

除了两种特殊情况外,该程序查找 :,检查 30 是否存在,如果存在则保留当前小时并创建一个新字符串带有 AM/PM 标签和小时,但使用 00 而不是 30。如果结尾是 00 ,它会将小时部分转换为 int,减去 1,将其返回为字符串,在分钟中添加 30部分并再次保留 AM/PM 部分。

关于python - 为时代换弦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46009599/

相关文章:

python - 按名称迭代目录中的图像

python - 对 `python` 中的同一变量使用多个条件

python - 找到目标后如何停止线程?

python - RQ 超时不会终止多线程作业

python - cgi.FieldStorage 不从 requests.post 读取 json 数据

python - 保持对象按多个键排序的高效数据结构

python - 私有(private)方法只能从 python 中它自己的类访问是什么意思?

python - 如何从一个类调用另一个类的方法

Python:如何使用 BeautifulSoup 查找第一个 anchor 标记的文本

python - 在 PYTHON 2.7 中循环发送电子邮件