日期字符串到时间元组(python)

2024-04-28 09:47:30 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的问题:

我正在尝试将字符串作为函数传递,并需要将其转换为时间元组:

  def  sim(startdate, enddate):
     #need to convert the date from string to integer time tuple:


     dt_start = dt.date(startdate)
     print 'Start Date: ', dt_start

     dt_end = dt.date(enddate)
     print 'End Date: ', dt_end

 # in String format
 sim('Jan 1, 2011', 'Dec 31, 2011')

 # in interger in string format
 sim('2011,1,1', '2011,12,31')

Tags: to函数字符串informatdatestringdt
3条回答

你可能想做的是:

import datetime as dt

year,month,day = map(int, '2011,1,1'.split(','))
dt_start = dt.date(year,month,day)
print dt_start # prints 2011-01-01

错误是因为使用字符串'2011,1,1'而不是整数:2011,1,1作为:datetime.date()的输入

我假设您想将日期('2011年1月1日','2011年12月31日')和('2011年1月1日','2011年12月31日')转换为时间元组

 from datetime import datetime
 date_str = "Jan 1, 2011"
 fmt = "%b %d, %Y"

 # Construct a datetime object
 date_obj = datetime.strptime(date_str, fmt)

 # Convert it to any string format you want
 new_fmt = "%Y, %m, %d"
 print date_obj.strftime(new_fmt)
 # Prints'2011, 01, 01'

 # If you want python timetuple then
 t_tuple = date_obj.timetuple()

另一种方法是使用^{}。为这两种格式定义一个时间格式并相应地使用它们。这就是我的意思:

import datetime as dt

def  sim(startdate, enddate):
    time_format_one = "%b %d, %Y"
    time_format_two = "%Y,%m,%d"

    try:
        dt_start = dt.datetime.strptime(startdate, time_format_one)
        dt_end = dt.datetime.strptime(enddate, time_format_one)
    except ValueError:
        dt_start = dt.datetime.strptime(startdate, time_format_two)
        dt_end = dt.datetime.strptime(enddate, time_format_two)

    print 'Start Date: ', dt_start.date()
    print 'End Date: ', dt_end.date()

# in String format
sim('Jan 1, 2011', 'Dec 31, 2011')

# in interger in string format
sim('2011,1,1', '2011,12,31')

印刷品:

Start Date:  2011-01-01
End Date:  2011-12-31
Start Date:  2011-01-01
End Date:  2011-12-31

如果需要时间元组,可以对dt_startdt_end使用^{}

相关问题 更多 >