如何转换日期格式并向其添加hh:mm:ss
How to convert date format and add hh:mm:ss to it
我的问题是用户可以输入任何日期格式,12-feb-2015
或 12/10/2015
,我需要将其转换为以下格式:
12-feb-2015 00:00:00
这进一步将在 MySQL 查询中提供,然后将用于获取给定日期范围内的数据
所以我有 2 个问题:
是否有任何标准方法可以将 任何 输入格式转换为我需要的格式?
我怎样才能将 hh:mm:ss
添加到它?
我在 SO 线程上看到了很多方法,但 none 似乎对我有所帮助。
通常 SO 不是代码编写服务,但是...:)
这只是您可以做的事情的开始。我不知道有什么方法可以让一个测试捕获多种格式。相反,我总是 "gone through" 可用的格式。由于我们谈论的是两个,这里有一些东西可以启动你的思考:
from datetime import datetime
def parse_date(thedate):
result = None
#try each format
try:
result = datetime.strptime(thedate, "%d-%b-%Y")
except ValueError:
pass
except:
raise
# Let the last one "blow" up
if result is None:
result = datetime.strptime(thedate, "%d/%m/%Y")
print "{} parsed into {}".format(thedate,result.strftime("%d-%b-%Y %H:%M:%S"))
parse_date("12/10/2015")
产量 12/10/2015 parsed into 12-Oct-2015 00:00:00
和
parse_date("12-feb-2015")
产量 12-feb-2015 parsed into 12-Feb-2015 00:00:00
这应该让你继续。查看 strptime/strftime formats here(向下滚动到 strftime 函数)。
你的方法的主要问题是任何种格式可能是你能想象的无限种。
受@al-g 回答的启发,我提出了一种使用一组已知数据格式的方法。
from datetime import datetime
def convert(dtm):
formats = ['%d/%m/%Y', '%d-%m-%Y', '%d/%m/%Y %H:%M:%S', '%d-%m-%Y %H:%M:%S']
for fmt in formats:
try:
return datetime.strptime(dtm, fmt).strftime('%d/%b/%Y %H:%M:%S')
except ValueError:
pass
except:
raise
print 'Format not recognized'
>>> convert('15072015')
Format not recognized
>>> convert('15-07-2015')
'15/Jul/2015 00:00:00'
>>> convert('15/07/2015')
'15/Jul/2015 00:00:00'
您可以在每次找到新格式时更新格式集。
我的问题是用户可以输入任何日期格式,12-feb-2015
或 12/10/2015
,我需要将其转换为以下格式:
12-feb-2015 00:00:00
这进一步将在 MySQL 查询中提供,然后将用于获取给定日期范围内的数据
所以我有 2 个问题:
是否有任何标准方法可以将 任何 输入格式转换为我需要的格式?
我怎样才能将
hh:mm:ss
添加到它?
我在 SO 线程上看到了很多方法,但 none 似乎对我有所帮助。
通常 SO 不是代码编写服务,但是...:)
这只是您可以做的事情的开始。我不知道有什么方法可以让一个测试捕获多种格式。相反,我总是 "gone through" 可用的格式。由于我们谈论的是两个,这里有一些东西可以启动你的思考:
from datetime import datetime
def parse_date(thedate):
result = None
#try each format
try:
result = datetime.strptime(thedate, "%d-%b-%Y")
except ValueError:
pass
except:
raise
# Let the last one "blow" up
if result is None:
result = datetime.strptime(thedate, "%d/%m/%Y")
print "{} parsed into {}".format(thedate,result.strftime("%d-%b-%Y %H:%M:%S"))
parse_date("12/10/2015")
产量 12/10/2015 parsed into 12-Oct-2015 00:00:00
和
parse_date("12-feb-2015")
产量 12-feb-2015 parsed into 12-Feb-2015 00:00:00
这应该让你继续。查看 strptime/strftime formats here(向下滚动到 strftime 函数)。
你的方法的主要问题是任何种格式可能是你能想象的无限种。
受@al-g 回答的启发,我提出了一种使用一组已知数据格式的方法。
from datetime import datetime
def convert(dtm):
formats = ['%d/%m/%Y', '%d-%m-%Y', '%d/%m/%Y %H:%M:%S', '%d-%m-%Y %H:%M:%S']
for fmt in formats:
try:
return datetime.strptime(dtm, fmt).strftime('%d/%b/%Y %H:%M:%S')
except ValueError:
pass
except:
raise
print 'Format not recognized'
>>> convert('15072015')
Format not recognized
>>> convert('15-07-2015')
'15/Jul/2015 00:00:00'
>>> convert('15/07/2015')
'15/Jul/2015 00:00:00'
您可以在每次找到新格式时更新格式集。