在Django中从DateTime中去除时间
我想从日期时间中去掉时间部分,只保留日期、年份和月份。
"2014-04-17T00:00:00"
我试过不同的方法,但都没成功。
class Inventory(models.Model):
manufacturer = models.CharField(max_length=255)
model = models.CharField(max_length=255)
description = models.TextField(max_length=255)
count = models.IntegerField(max_length= 255, default=1)
location = models.ForeignKey('Location', null=True, blank=True)
cover = models.FileField(upload_to = 'static/images/', default = 'static/images/no-image.png')
created = models.DateTimeField(auto_now_add=True)
barcode = models.CharField(max_length=255)
assigned = models.ForeignKey(User, blank=True, null=True)
checked = models.BooleanField(default=False)
modified = models.DateTimeField(default=datetime.datetime.now)
tags = TaggableManager(through=None, blank=True)
def __unicode__(self):
return '%s' % date(self.modified, "n/j/Y")
def format_date(obj):
return obj.modified.strftime('%d %b %Y %H:%M')
format_date.short_description = 'Modified'
5 个回答
0
如果需要的话,你可以存储时间,否则你可以使用日期字段,具体可以参考这里。
不过,如果你在模型中使用了日期时间字段(DateTimeField),想要通过Django的ORM只获取日期,你可以简单地这样做:
获取仅日期:
User.objects.filter('created_at__date')
获取仅月份:
User.objects.filter('created_at__month')
获取仅年份:
User.objects.filter('created_at__year')
0
只需将
modified = models.DateTimeField(default=datetime.datetime.now)
替换为
modified = models.DateField(default=datetime.date.now)
0
这段代码可以解决你的问题:
def get_date(dt):
"""
Remove the time from datetime field.
"""
return dt.strftime("%Y-%M-%d")
@property
def modified_date(self):
return self.get_date(self.modified)
你也可以用 DateField 来代替 DateTimeField。
1
你可以使用 dateutil.parser 来解析 strftime 格式的日期:
import dateutil.parser
datetime_date = dateutil.parser.parse(strf_date)
然后你可以根据需要的日期部分来获取 strftime 格式的日期。在你的例子中,就是年、月、日:
date_only = datetime_date.strftime("%Y-%M-%d")
3
这个对我有效。
def get_date(self):
return self.modified.date()