【发布时间】:2018-02-09 15:58:16
【问题描述】:
我正在编写我的 python 脚本以从按钮对象中获取字符串,以便我可以使用它来设置日期格式以及从字符串中获取的时间以将其存储在列表中。当我从按钮对象中获取字符串时,我想为每个字符串设置日期,例如:29/08/2017 11:30PM、30/08/2017 12:00AM、30/08/2017 12:30AM。
当我尝试这个时:
if day_date >= 0 and day_date <= 6:
if epg_time3 == '12:00AM':
if day_date > 0:
currentday = datetime.datetime.now() + datetime.timedelta(days = 0)
nextday = datetime.datetime.now() + datetime.timedelta(days = self.program_day)
if currentday != nextday:
epg_time_1 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
epg_time_2 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
epg_time_3 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
elif currentday == nextday:
epg_time_1 = datetime.datetime.now() + datetime.timedelta(days = self.program_day)
epg_time_2 = datetime.datetime.now() + datetime.timedelta(days = self.program_day - 1)
epg_time_3 = datetime.datetime.now() + datetime.timedelta(days = self.program_day - 1)
它将显示输出:
self.epg_time_1
['29/08/2017 11:00PM']
self.epg_time_2
['29/08/2017 11:30PM']
self.epg_time_3
['29/08/2017 12:00AM']
当我再次调用 EPG_Times 函数时,它会显示如下输出:
self.epg_time_1
['30/08/2017 11:00PM']
self.epg_time_2
['30/08/2017 11:30PM']
self.epg_time_3
['30/08/2017 12:00AM']
应该是:
self.epg_time_1
['30/08/2017 11:00PM']
self.epg_time_2
['30/08/2017 11:30PM']
self.epg_time_3
['31/08/2017 12:00AM']
正如您所见,时间 12:00AM 是第二天,所以我想将其设置为 31 而不是 30。我已经从days = self.program_day + 1 更改为days = self.program_day - 1,但是当字符串从变量epg_time_1、epg_time_2 和epg_time_3 中显示11:00PM、11:30PM 和12:00AM 时,它会显示这样的输出:
self.epg_time_1
['30/08/2017 11:00PM']
self.epg_time_2
['30/08/2017 11:30PM']
self.epg_time_3
['30/08/2017 12:00AM']
这里是完整的代码:
self.program_day = list()
def EPG_Times(self):
self.epg_time_1 = list()
self.epg_time_2 = list()
self.epg_time_3 = list()
epg_time1 = str(self.getControl(344).getLabel())
epg_time2 = str(self.getControl(345).getLabel())
epg_time3 = str(self.getControl(346).getLabel())
day_date = self.program_day
day = ''
month = ''
year = ''
if day_date >= 0 and day_date <= 6:
if epg_time3 == '12:00AM':
if day_date == 0:
if epg_time1 == '12:00AM':
epg_time_1 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
epg_time_2 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
epg_time_3 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
else:
epg_time_1 = datetime.datetime.now() + datetime.timedelta(days = self.program_day)
epg_time_2 = datetime.datetime.now() + datetime.timedelta(days = self.program_day)
epg_time_3 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
else:
currentday = datetime.datetime.now() + datetime.timedelta(days = 0)
nextday = datetime.datetime.now() + datetime.timedelta(days = self.program_day)
if currentday != nextday:
epg_time_1 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
epg_time_2 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
epg_time_3 = datetime.datetime.now() + datetime.timedelta(days = self.program_day + 1)
elif currentday == nextday:
epg_time_1 = datetime.datetime.now() + datetime.timedelta(days = self.program_day)
epg_time_2 = datetime.datetime.now() + datetime.timedelta(days = self.program_day - 1)
epg_time_3 = datetime.datetime.now() + datetime.timedelta(days = self.program_day - 1)
epg1_day = epg_time_1.strftime("%d")
epg1_month = epg_time_1.strftime("%m")
epg1_year = epg_time_1.strftime("%Y")
epg2_day = epg_time_2.strftime("%d")
epg2_month = epg_time_2.strftime("%m")
epg2_year = epg_time_2.strftime("%Y")
epg3_day = epg_time_2.strftime("%d")
epg3_month = epg_time_2.strftime("%m")
epg3_year = epg_time_2.strftime("%Y")
half_hour = str(epg1_day + "/" + epg1_month + "/" + epg1_year + " " + epg_time1)
one_hour = str(epg2_day + "/" + epg2_month + "/" + epg2_year + " " + epg_time2)
one_hour_half = str(epg3_day + "/" + epg3_month + "/" + epg3_year + " " + epg_time3)
#Store the times and date in the list....
self.epg_time_1.append(half_hour)
self.epg_time_2.append(one_hour)
self.epg_time_3.append(one_hour_half)
当我调用 EPG_time(self) 函数时,我希望代码将我从按钮对象获得的每个字符串更改为前一天的日期。如果epg_time_1 和epg_time_2 显示字符串11:00PM 和11:30PM,我想将时间和日期设置为29/08/2017 11:00PM 用于epg_time_1 和29/08/2017 11:30PM 用于epg_time_2。如果epg_time_3 显示字符串12:00AM,那么我想将其添加到带有时间30/08/2017 12:00AM 的第二天日期。
在接下来的 24 小时内,如果 epg_time_1 和 epg_time_2 显示字符串 11:00PM 和 11:30PM,我想为 epg_time_1 和 30/08/2017 11:30PM 设置时间和日期为 30/08/2017 11:00PM epg_time_2。如果epg_time_3 显示字符串12:00AM,那么我想将时间设置为第二天日期1/09/2017 12:00AM
如果epg_time_1 和epg_time_2 显示字符串11:30PM 和12:00AM,我想更改为epg_time_1 的上一个日期,即29/08/2017 11:30PM 和30/08/2017 12:00AM。这取决于我将字符串存储在列表中的时间和日期。
你能告诉我一个例子,我如何在 python 中使用将日期更改为前一个日期并添加到第二天的日期?
【问题讨论】:
-
你能把这段文字合并一下吗?看来您真正需要的只是使用
strptime将您的字符串转换为日期时间。日期变化的所有逻辑都将由 datetime 模块本身处理。 -
对,我可能可以把一些东西放在一起作为例子,但我认为不可能从所呈现的内容中正确回答你的问题。我将不得不做出一些假设;你得到一个代表不同日期时间的 3 个字符串的列表,你需要在这些字符串中添加一个常数因子(介于 1 到 6 之间),并且你希望日期时间反映这种变化?
标签: python string python-2.7 datetime