0
我在我的Django应用程序中使用自然时间。自然时间与分钟,小时,天和星期
我怎样才能以分钟显示时间,然后是几小时,几天,几周?
这里是我的代码:
{{ obj.pub_date|naturaltime }}
我在我的Django应用程序中使用自然时间。自然时间与分钟,小时,天和星期
我怎样才能以分钟显示时间,然后是几小时,几天,几周?
这里是我的代码:
{{ obj.pub_date|naturaltime }}
我用两个自定义过滤器使用巴贝尔和pytz解决一个非常类似的问题。我写“今日”或“昨天”加上时间。欢迎您以任何喜欢的方式使用我的代码。
我的模板代码是两种用法,一种用于编写“今日”,“昨天”或日期,如果它更早。
{{ scored_document.fields.10.value|format_date_human(locale='en') }}
那么这个标签中写入
日{{ scored_document.fields.10.value|datetimeformat_list(hour=scored_document.fields.17.value|int ,minute =scored_document.fields.18.value|int, timezoneinfo=timezoneinfo, locale=locale) }}
的实际时间对应的两个功能是
MONTHS = ('Jan.', 'Feb.', 'Mar.', 'April.', 'May.', 'June.',
'July.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.')
FORMAT = '%H:%M/%d-%m-%Y'
def format_date_human(to_format, locale='en', timezoneinfo='Asia/Calcutta'):
tzinfo = timezone(timezoneinfo)
now = datetime.now()
#logging.info('delta: %s', str((now - to_format).days))
#logging.info('delta2: %s', str((datetime.date(now)-datetime.date(to_format)).days))
if datetime.date(to_format) == datetime.date(now):
date_str = _('Today')
elif (now - to_format).days == 1:
date_str = _('Yesterday')
else:
month = MONTHS[to_format.month - 1]
date_str = '{0} {1}'.format(to_format.day, _(month))
time_str = format_time(to_format, 'H:mm', tzinfo=tzinfo, locale=locale)
return "{0}".format(date_str, time_str)
def datetimeformat_list(date, hour, minute, locale='en', timezoneinfo='Asia/Calcutta'):
import datetime as DT
import pytz
utc = pytz.utc
to_format = DT.datetime(int(date.year), int(date.month), int(date.day), int(hour), int(minute))
utc_date = utc.localize(to_format)
tzone = pytz.timezone(timezoneinfo)
tzone_date = utc_date.astimezone(tzone)
time_str = format_time(tzone_date, 'H:mm')
return "{0}".format(time_str)
你忘了加上'naturaltime'代码。 ;) – allcaps
我相信这是最好的使用像http://momentjs.com/一些js模块,然后你只是在你的模板中呈现日期时间戳,让js完成剩下的工作。 – allcaps