37,719
社区成员
发帖
与我相关
我的任务
分享
def parse_cn_date(date_str):
"""
源文件 catalina.2017-06-06.log
日期格式 七月 08, 2017 9:30:10 上午
:param date_str: <unicode> raw date
:return: <datetime>
"""
if not isinstance(date_str, unicode):
raise AttributeError
month_regex = u'([\u4e00]|[\u4e8c]|[\u4e09]|[\u56db]|[\u4e94]|[\u516d]' \
u'|[\u4e03]|[\u516b]|[\u4e5d]|[\u5341]){1,2}[\u6708]'
year = int(re.search(u'\d{4} ', date_str).group().strip())
day = int(re.search(u'\d{2},', date_str).group()[:-1])
month = int(month_dict[re.search(month_regex, date_str).group()])
is_pm = re.search(u'[\u4e00-\u9fa5][\u5348]', date_str).group()[0] == u'下'
time = re.search(u'\d{1,2}:\d{1,2}:\d{1,2}', date_str).group()
hour = int(time.split(u':')[0])
if is_pm:
hour += 12
minute = int(time.split(u':')[1])
second = int(time.split(u':')[2])
return datetime(year, month, day, hour, minute, second)
# coding=utf-8
# Python2.7
import datetime
def adapter(fmt):
def _deco(func):
def wraper(*arg, **kwarg):
dt = func(*arg,**kwarg)
return dt.strftime(fmt)
return wraper
return _deco
@adapter(fmt='%Y/%m/%d %H:%M:%S')
def str_to_date(date_str):
dt = datetime.datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
return dt
date_time = str_to_date('2017-9-23 22:15:00')
print type(date_time), date_time
<type 'str'> 2017/09/23 22:15:00
>>>
def sub_cn_date(m):
text = m.group()
return parse_cn_date(text)