Python 如何转换日期格式并向其添加hh:mm:ss
我的问题是,用户可以输入任何日期格式,Python 如何转换日期格式并向其添加hh:mm:ss,python,date,datetime,datetime-format,python-datetime,Python,Date,Datetime,Datetime Format,Python Datetime,我的问题是,用户可以输入任何日期格式,2015年2月12日或2015年10月12日,我需要将其转换为以下格式: 12-feb-2015 00:00:00 这将进一步输入MySQL查询,然后用于获取给定日期范围内的数据 所以我有两个问题: 是否有任何标准方法将任何输入格式转换为我所需的格式 如何将hh:mm:ss附加到它 我在SO线程上看到了很多方法,但似乎没有一个能帮我解决问题。通常,SO不是一个代码编写服务,而是…:) 这只是你能做的事情的开始。我不知道有什么方法可以让一个测试捕获多种格
2015年2月12日
或2015年10月12日
,我需要将其转换为以下格式:
12-feb-2015 00:00:00
这将进一步输入MySQL查询,然后用于获取给定日期范围内的数据所以我有两个问题:
- 是否有任何标准方法将任何输入格式转换为我所需的格式
- 如何将
附加到它hh:mm:ss
我在SO线程上看到了很多方法,但似乎没有一个能帮我解决问题。通常,SO不是一个代码编写服务,而是…:) 这只是你能做的事情的开始。我不知道有什么方法可以让一个测试捕获多种格式。相反,我总是“浏览”可用的格式。既然我们谈论的是两个问题,那么这里有一些东西可以激发你的思考:
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_日期(“2015年10月12日”)
产生2015年10月12日解析为2015年10月12日00:00:00
及
parse_date(“2015年2月12日”)
产生2015年2月12日解析为2015年2月12日00:00:00
那会让你走的。查看(向下滚动到strftime函数)。通常情况下,它不是代码编写服务,而是…:) 这只是你能做的事情的开始。我不知道有什么方法可以让一个测试捕获多种格式。相反,我总是“浏览”可用的格式。既然我们谈论的是两个问题,那么这里有一些东西可以激发你的思考:
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_日期(“2015年10月12日”)
产生2015年10月12日解析为2015年10月12日00:00:00
及
parse_date(“2015年2月12日”)
产生2015年2月12日解析为2015年2月12日00:00:00
那会让你走的。查看(向下滚动到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'
您可以在每次找到新的格式时更新格式集。您的方法的主要问题是,任何类型的格式都可能是无限的,您可以想象多少 受@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'
您可以在每次发现新格式时更新该组格式。是日期格式还是仅列出的两种格式?@AlG:目前可以是任意格式,但我将限制为这两种格式。问题是我需要将用户友好的月份-二月/三月/四月作为必填项,另一个是可选的(但无法删除)它是任何日期格式还是仅列出的两种格式?@AlG:目前它可以是任何格式,但我将限制为这两种格式。问题是,我需要将用户友好的月份-2月/3月/4月作为强制性的,另一个是可选的(但不能删除),通常不是代码编写服务,而是…:)-我很清楚,伙计,我在寻找一个正确方向的方法或指示,而不是代码编写服务…不管怎样,小小的调整和您的解决方案是有帮助的!:)通常情况下,不是代码编写服务,而是…:)-我很清楚,伙计,我在寻找一个正确方向的方法或指示,而不是代码编写服务…不管怎样,小小的调整和您的解决方案是有帮助的!:)