[英]How to format a date in python
我目前正在做一个程序,其中存储用户信息,例如他们的名字、姓氏和出生日期。 我对高级 python 函数的经验不是很丰富,我尝试将出生日期声明为字符串值,但这会导致可以提供任何输入的问题,例如“24/05/98”或“24/ 05/1998"。
如何使输入仅适用于“DD/MM/YYYY”格式?
一般来说,让用户输入这样的结构化数据并不是一个好主意,“实际上可以提供任何输入”。
但是python-dateutil
包在尝试适应方面做得很好。
from dateutil import parser
s1 = "24/05/98"
s2 = "24/05/1998"
s3 = "05/24/1998"
dt1 = parser.parse(s1)
dt2 = parser.parse(s2)
dt3 = parser.parse(s3)
print dt1 # 1998-05-24 00:00:00
print dt2 # 1998-05-24 00:00:00
print dt3 # 1998-05-24 00:00:00
print dt1 == dt2 # True
print dt1 == dt3 # True
显然,当它无法弄清楚输入时,这种好处就会崩溃,例如月份和日期在字符串中的顺序:
s4 = "1/2/15" # Feb 1, 2015 in D/M/Y
s5 = "2/1/15" # Feb 1, 2015 in M/D/Y
dt4 = parser.parse(s4)
dt5 = parser.parse(s5)
print dt4 # 2015-01-02 00:00:00
print dt5 # 2015-02-01 00:00:00
print dt4 == dt5 # False
编辑:根据您的评论,如果您知道数据的格式,则可以使用strptime
。
如果输入无法成功解析,给定您提供的模式(在这种情况下, %d/%m/%Y
或DD/MM/YYYY
),将引发ValueError
。
from datetime import datetime
s1 = "24/05/1998"
s2 = "05/24/1998"
s3 = "24/05/98"
for s in [s1, s2, s3]:
try:
dt = datetime.strptime(s, "%d/%m/%Y")
print(dt)
except ValueError:
print("Failed to parse: %s" % s)
输出:
1998-05-24 00:00:00 # Parse successful -- dt contains the datetime object Failed to parse: 05/24/1998 # Parse failed Failed to parse: 24/05/98 # Parse failed
试试这个代码,我希望它能解决你的问题。
from time import strptime
date = raw_input("Please enter a date in DD/MM/YYYY format: ")
try:
parsed = strptime(date, "%d/%m/%Y")
except ValueError as e:
print "Please retry: {0}".format(e)
#Do your work...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.