我的代码需要一些帮助。从数据库中提取字符串后,我已将title: {1: [1, 3, 5, 6, 2, 4], 2: [], 3: []}
对象存储到列表中。现在我想将它转换为字符串。
示例:
datetime
对此:
datetime.datetime(2018, 3, 12, 0, 0)
如果我想将12/03/2018 12:00AM
对象转换为字符串以使其显示datetime
,我将不得不使用以下内容:
12/03/2018 12:00AM
以下是我从数据库中提取数据后在self.program_end_date列表中存储日期时间的内容:
program_stop_date = '20180312000000'
stop_time = time.strptime(program_stop_date, '%Y%m%d%H%M%S')
stop_time = datetime.datetime.fromtimestamp(time.mktime(stop_time))
program_stop_hours = str(stop_time.hour)
program_stop_minutes = str(stop_time.minute)
program_stop_days = int(stop_time.day)
program_stop_months = int(stop_time.month)
program_stop_year = str(stop_time.year)
program_stop_hours = int(program_stop_hours)
if program_stop_minutes == "0":
program_stop_minutes = "00"
elif program_stop_minutes == "5":
program_stop_minutes = "05"
if program_stop_hours >= 0 and program_stop_hours <= 9:
program_stop_hours = str(program_stop_hours)
program_stop_hours = str("0" + program_stop_hours)
if program_stop_days >= 0 and program_stop_days <= 9:
program_stop_days = str(program_stop_days)
program_stop_days = str("0" + program_stop_days)
if program_stop_months >= 0 and program_stop_months <= 9:
program_stop_months = str(program_stop_months)
program_stop_months = str("0" + program_stop_months)
program_stop_hours = int(program_stop_hours)
program_stop_days = str(program_stop_days)
program_stop_months = str(program_stop_months)
if program_stop_hours >= 00 and program_stop_hours <= 12:
program_AM_PM = 'AM'
else:
program_AM_PM = 'PM'
program_stop_hours = str(program_stop_hours)
program_stop_times = str(program_stop_hours + ':' + program_stop_minutes + program_AM_PM)
program_end_time = str(program_stop_days + "/" + program_stop_months + "/" + program_stop_year + " " + program_stop_times)
我想将cur.execute('SELECT start_date, stop_date, title, program_id FROM programs WHERE program_id=? LIMIT 10', [program_id])
programs = cur.fetchall()
for ind, row in enumerate(programs):
program_stop_date = str(row[1])
stop_time = time.strptime(program_stop_date, '%Y%m%d%H%M%S')
program_stop_times = time.strftime('%d/%m/%Y %H:%M%p', stop_time)
program_stop_time = time.strptime(program_stop_times, '%d/%m/%Y %H:%M%p')
self.program_end_time = list()
self.program_end_time.append(program_stop_time)
对象转换为字符串的原因是因为我想将它从字符串转换为datetime
对象,如下所示:
time.struct_time
我认为没有必要,但我不知道如何从program_stop_times = '12/03/2018 12:00AM'
program_stop_time = time.strptime(program_stop_times, '%d/%m/%Y %I:%M%p')
转换为datetime
对象。这是我能想到的唯一方法,就像我在顶部显示的代码一样,将time.struct_time
转换为字符串然后转换为datetime
。
您能否请您举例说明如何将time.struct_time
对象转换为字符串以使其显示datetime
或使用比我可以使用的更好的方式?
答案 0 :(得分:1)
关注您的具体示例,您可以通过3个步骤将字符串转换为time.struct_time
对象:
str
转换为datetime
,x
。datetime
转换为date
,y
。date
转换为time.struct_time
,z
。下面,为方便起见,我使用dateutil.parser.parse
作为第1步。
from dateutil import parser
from datetime import datetime
program_stop_times = '12/03/2018 12:00AM'
x = parser.parse(program_stop_times)
y = x.date()
z = y.timetuple()
# time.struct_time(tm_year=2018, tm_mon=12, tm_mday=3, tm_hour=0, tm_min=0,
# tm_sec=0, tm_wday=0, tm_yday=337, tm_isdst=-1)
您可以,也许应该将这些链接在一个功能中:
def str_timestruct(x):
return parser.parse(x).date().timetuple()