[英]How to convert string date in datetime.date format
我想将日期格式(如6月28日)转换为日期时间格式(如2014-06-28)。 我尝试了下面的代码和更多的变化,这些变化在ipython中为我提供了正确的输出,但是我无法将记录保存在数据库中。 由于值的日期格式无效,因此会引发错误。 必须为YYYY-MM-DD格式。 谁能帮我解决这个问题?
以下是代码段
m = "Jun"
d = 28
y = datetime.datetime.now().year
m = strptime(m,'%b').tm_mon
if m > datetime.datetime.now().month:
y=y-1
new_date = str(d)+" "+str(m)+" "+str(y)
new_date = datetime.datetime.strptime(new_date, '%b %d %Y').date()
我的models.py是
class Profile(models.Model):
Name = models.CharField(max_length = 256, null = True, blank = True)
Location = models.CharField(max_length = 256, null = True, blank = True)
Degree = models.CharField(max_length = 256, null = True, blank = True)
Updated_on = models.DateField(null = True, blank = True)
保存到模型中的代码就像
def save_record(self):
try:
record = Profile(Name= indeed.name,
Location = loc,
Degree = degree,
Updated_on = new_date,
)
record.save()
print "Record added"
except Exception as err:
print "Record not added ",err
pass
提前致谢
一旦有了date
对象,就可以使用strftime()
函数将其格式化为字符串。
假设new_date
是您问题中的日期对象。 然后,您可以执行以下操作:
new_date.strftime('%Y-%m-%d')
顺便说一句,您也可以对datetime
对象执行相同的操作。
编辑:仔细检查您的Updated_on
字段是否使用DateField
或DateTimeField
。 这将分别影响您使用datetime.date()
对象还是datetime.datetime()
对象。
我尝试在控制台上:
>>import datetime
>>datetime.datetime.strptime("Jun-08-2013", '%b-%d-%Y').date()
datetime.date(2013, 6, 8)
代码中有几个错误。 因此解决方案应该是:
m = "Jun"
d = 28
if datetime.datetime.strptime("Aug",'%b').month > datetime.datetime.now().month:
y= (datetime.datetime.now() - relativedelta(years=1)).year #from dateutil.relativedelta import relativedelta
else:
y=datetime.datetime.now().year
new_date = str(m)+"-"+str(d)+"-"+str(y)
new_date = datetime.datetime.strptime(new_date, '%b-%d-%Y').date()
new_date
是一个日期对象,因此应将其保存到models.DateField()
而不会出现任何问题(包括格式问题)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.