时差输出不符合预期
Output of Time difference is not as is expected
models.py:
class Attendancename(models.Model):
teacher_name = models.ForeignKey(Teachername)
date = models.DateField('Date')
intime = models.TimeField('IN-TIME')
outtime = models.TimeField('OUT-TIME')
def hours_conversion(self):
tdelta = (datetime.datetime.combine(datetime.date.today(),self.outtime) - datetime.datetime.combine(datetime.date.today(),self.intime))
res = float((tdelta).seconds/3600)
return '{0:.2f}'.format(res,)
我曾经在模型中定义方法 class 来计算 'intime'
和 'outtime'
之间的时间差。我也成功了,但是结果不是我想的那样。
我在我的表单字段中输入了 'intime'
-09:00 am 和 'outime'
-12:32 pm,它显示 'total hours'
- 3.54hr 作为输出。
任何人都知道到底出了什么问题吗?
谢谢!提前。
输出是以小时和分钟的形式得到的小时数
output = '{0:.2f}'.format(res,)
hours = output-(output%1)
minutes = (output%1)*60
return hours+":"+minutes
需要
要以 hh:mm
(3:32) 的形式获得输出,您需要访问 timedelta 的那些属性。用以下内容替换您的 return 语句。
hours, minutes = tdelta.seconds//3600, (tdelta.seconds//60)%60
return '{0}:{1}'.format(hours, minutes)
如果你不介意秒;你可以调用 str()
函数:
>>> from datetime import timedelta
>>> td = timedelta(hours=3, minutes=32)
>>> str(td)
'3:32:00'
您可以删除秒和微秒:
>>> str(td).rpartition(':')[0]
'3:32'
或者您可以手动格式化:
hours, seconds = divmod(td.total_seconds(), 3600)
minutes, seconds = divmod(seconds, 60)
print("%02d:%02d" % (hours, minutes))
# -> 03:32
models.py:
class Attendancename(models.Model):
teacher_name = models.ForeignKey(Teachername)
date = models.DateField('Date')
intime = models.TimeField('IN-TIME')
outtime = models.TimeField('OUT-TIME')
def hours_conversion(self):
tdelta = (datetime.datetime.combine(datetime.date.today(),self.outtime) - datetime.datetime.combine(datetime.date.today(),self.intime))
res = float((tdelta).seconds/3600)
return '{0:.2f}'.format(res,)
我曾经在模型中定义方法 class 来计算 'intime'
和 'outtime'
之间的时间差。我也成功了,但是结果不是我想的那样。
我在我的表单字段中输入了 'intime'
-09:00 am 和 'outime'
-12:32 pm,它显示 'total hours'
- 3.54hr 作为输出。
任何人都知道到底出了什么问题吗? 谢谢!提前。
输出是以小时和分钟的形式得到的小时数
output = '{0:.2f}'.format(res,)
hours = output-(output%1)
minutes = (output%1)*60
return hours+":"+minutes
需要
要以 hh:mm
(3:32) 的形式获得输出,您需要访问 timedelta 的那些属性。用以下内容替换您的 return 语句。
hours, minutes = tdelta.seconds//3600, (tdelta.seconds//60)%60
return '{0}:{1}'.format(hours, minutes)
如果你不介意秒;你可以调用 str()
函数:
>>> from datetime import timedelta
>>> td = timedelta(hours=3, minutes=32)
>>> str(td)
'3:32:00'
您可以删除秒和微秒:
>>> str(td).rpartition(':')[0]
'3:32'
或者您可以手动格式化:
hours, seconds = divmod(td.total_seconds(), 3600)
minutes, seconds = divmod(seconds, 60)
print("%02d:%02d" % (hours, minutes))
# -> 03:32