繁体   English   中英

如何以datetime.date格式转换字符串日期

[英]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字段是否使用DateFieldDateTimeField 这将分别影响您使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM