字符串与datetime的相互转换

时间:2022-07-06 17:53:30

利用str或strftime方法可以传入一个格式化字符串。

>>> from datetime import datetime
>>>
>>> stamp = datetime(2016,10,30)
>>> str(stamp)
'2016-10-30 00:00:00'
>>> stamp.strftime('%Y-%m-%d')
'2016-10-30'
>>>

将格式化变化后字符串转换为日期:

>>> 
>>> value = '2016-10-30'
>>> datetime.strptime(value,'%Y-%m-%d')
datetime.datetime(2016, 10, 30, 0, 0)
>>>

或者更好的方法是通过dateutil中的parser.parser方法解析(该方法可以解析大部分人类能够理解的日期表示形式):

>>> from dateutil.parser import parse
>>> parse('2016-10-30')
datetime.datetime(2016, 10, 30, 0, 0)
>>>
>>> parse('20/10/2016')
datetime.datetime(2016, 10, 20, 0, 0)
>>> parse('20/10/2016',dayfirst=True)
datetime.datetime(2016, 10, 20, 0, 0)
>>>

或者也可以通过pandas库来处理(首先需要安装pandas,pip2 install pandas)

>>> import pandas as pd
>>>
>>> datestr = ['7/6/2016','10/20/2016']
>>>
>>> pd.to_datetime(datestr)
DatetimeIndex(['2016-07-06', '2016-10-20'], dtype='datetime64[ns]', freq=None)
>>>

datetime格式定义:

%Y  4位数的年
%y 2位数的年
%m 2位数的月[01,12]
%d 2位数的日[01,31]

%H
时(24小时制) [00,23]
%I 时(12小时制) [01,12]
%M 2位数的分[00,59]
%S 秒[00,61] (秒60和秒61用于闰秒)

%w
用整数表示的星期几[0 (星期天),6]
%U 每年的第几周[00,53] 星期天被认为是每周的第一天,
每年第一个星期天之前的那几天就被认为是“第0周”

%W
每年的第几周[00,53] 星期一被认为是每周的第一天,
每年第一个星期一之前的那几天就被认为是“第0周”

%z
以+HHMM或-HHMM表示的UTC时区偏移量,如果市区为naive
(时间对象有naive和aware之分),则返回空字符串

%F
%Y-%m-%d简写形式,例如:2016-02-15
%D %m/%d/%y简写形式,例如:02/15/16

%a
星期几的简写
%A 星期几的全称
%b 月份的简写
%B 月份的全称
%c 完整的日期和时间,例如“Tue 01 May 2016 04:20:58 PM”
%p 不同环境中的AM或PM
%x 适合于当前环境的日期格式,例如,在美国,
“May 1,2016”会产生"05/01/2016"

%X
适合于当前环境的时间格式,例如:"04:24:12 PM"