首页>>后端>>Python->django取时间怎么转换成本地时间格式

django取时间怎么转换成本地时间格式

时间:2023-12-20 本站 点击:0

导读:很多朋友问到关于django取时间怎么转换成本地时间格式的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!

用django定义自动插入的时间显示格式怎么调

在模板中可以使用time和date过滤器格式化时间,如:{{ example_date | date:”F

j, Y” }}。

可以在settings里定义DATE_FORMAT,默认值为 'N j, Y';定义DATETIME_FORMAT,默认值是 'N j, Y, P',定义TIME_FORMAT,默认值为'P'。

如果这些都还不能够满足需求,那么就写一个自定义模板过滤器,或者在模型中定义一个新方法。

django-celery-beat时区问题

根据下文源码 可得出在django的settings中配置 DJANGO_CELERY_BEAT_TZ_AWARE 参数可控制celery时间格式

查看celery文档

timezone = 'Asia/Shanghai' # 时间取值时区

enable_utc = False # 涉及时区的时候需要该参数

timezone_aware = False # 关闭aware感知

python中timedelta方法怎么用

#! /usr/bin/python# coding=utf-8from datetime import datetime,timedelta"""timedelta代表两个datetime之间的时间差"""now = datetime.now()

past = past = datetime(2010,11,12,13,14,15,16)

timespan = now - past#这会得到一个负数

past - now

attrs = [

("days","日"),( 'seconds',"秒"),( 'microseconds',"毫秒")#('min',"最小"),( 'max',"最大"),]for k,v in attrs:    "timespan.%s = %s #%s" % (k,getattr(timespan, k),v)"""总共相差的秒数"""timespan.total_seconds()"""实例化一个timespan

请注意它的参数顺序

timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])"""timespan = timedelta(days=1)

now - timespan #返回的是datetime型

now + timespan

timespan * 2 #还可以乘哦。代表二倍

timespan / 13#增加一个月from calendar import monthrange

now + timedelta(days=monthrange(start.year,start.month)[1])

实例1:

'''时间d距离now()的长度,比如:1分钟前,1小时前,1月前,1年前'''

Python代码  

# -*- encoding=UTF-8 -*-

import datetime

def timebefore(d):

chunks = (

(60 * 60 * 24 * 365, u'年'),

(60 * 60 * 24 * 30, u'月'),

(60 * 60 * 24 * 7, u'周'),

(60 * 60 * 24, u'天'),

(60 * 60, u'小时'),

(60, u'分钟'),

)

#如果不是datetime类型转换后与datetime比较

if not isinstance(d, datetime.datetime):

d = datetime.datetime(d.year,d.month,d.day)

now = datetime.datetime.now()

delta = now - d

#忽略毫秒

before = delta.days * 24 * 60 * 60 + delta.seconds  #python2.7直接调用 delta.total_seconds()

#刚刚过去的1分钟

if before = 60:

return u'刚刚'

for seconds,unit in chunks:

count = before // seconds

if count != 0:

break

return unicode(count)+unit+u"前"

实例2:

‘’‘当前的时间上加一天或一年减一天等操作’‘’

Python代码1  

#!/usr/bin/env python

# -*- coding:utf-8 -*-

from datetime import datetime,timedelta

now = datetime.now()

yestoday = now - timedelta(days=1)

tommorow = now + timedelta(days=1)

next_year = now + timedelta(days = 365)

Python代码2  

#使用replace()代替日期加减 

from datetime import datetime

now1 = datetime.now()

now1     # datetime.datetime(2017, 2, 10, 22, 29, 48, 288500)

# 增加一天或减少一天  

now2 = now1.replace(day=9)

now2  # datetime.datetime(2017, 2, 9, 22, 29, 48, 288500)

# timestrap() 函数是把日期转化为时间戳,时间戳就是秒数

time_span = now1.timestrap() - now2.timestrap()/(24*3600)  

time_span # 1      

日期常用问题

1: Datetime中offset-naive与offset-aware时间的计算

在使用Django时,默认是开启对多时区的支持的,在获取时间的时候会是如下形式:

datetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=UTC)

我们可以利用django.utils.timezone中提供的localtime方法来将该时间转换为本地时间:

1234    dtdatetime.datetime(2014, 4, 18, 15, 37, 7, tzinfo=UTC) localtime(dt)datetime.datetime(2014, 4, 18, 23, 37, 7, tzinfo=LocalTimezone)   

有时候,我们需要将该时间与当前时间做比较,例如计算差值,你可能会想到直接这么做:

123    import datetime now = datetime.datetime.now() now - dt   

不过这是不对的,并告知如下错误:

123   Traceback (most recent call last):  File "console", line 1, in moduleTypeError: can't subtract offset-naive and offset-aware datetimes   

问题就出在利用datetime.datetime.now()得到的当前时间是offset-naive的,而另外一个却是offset-aware的,因此我们需要将这里的dt转成与now一样的形式,可以这么做:

12345    dt = dt.replace(tzinfo=None) dtdatetime.datetime(2014, 4, 18, 15, 37, 7) now - dtdatetime.timedelta(0, 34108, 443000)   

备注:1:timezone 获取的日期增加和修改(比如加一天减一天)

from django.utiles import timezone

from datetime

t1 = timezone.now()

# torrow

t1+datetime.timedelta(days=1,hours=1)

2:python得到两个时间段的每一天的列表

date_list = []

   begin_date = datetime.datetime.strptime(begin_date, "%Y-%m-%d")

   end_date = datetime.datetime.strptime(end_date, "%Y-%m-%d")    while begin_date = end_date:

       date_str = begin_date.strftime("%m-%d")

       date_list.append(date_str)

       begin_date += datetime.timedelta(days=1)    print date_list

# 方法2(安装boto3 库 pip install boto3):

from datetime import datetime

from dateutil.rrule import rrule, DAILY

a = datetime(2009, 5, 30)

b = datetime(2009, 6, 9)

for dt in rrule(DAILY, dtstart=a, until=b):

    print dt.strftime("%Y-%m-%d")

# 在原来日期上增加一年

from dateutil.relativedelta import relativedelta

from django.utils import timezone

t1 = timezone.now()

neww_year = t1 + relativedelta(years=1)

 

 

 

django中怎么格式化当前时间

datetime.datetime.now()

#2012-03-15 11:50:57.728000

这个会返回 microsecond。因此这个是我们不需要的。所以得做一下修改

datetime.datetime.now().strftime("%Y-%m-%d %H:%I:%S");

格式化之后,就得到了我们常见的格式了。

附:strftime参数

strftime(format[, tuple]) - string

将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出

python中时间日期格式化符号:

%y 两位数的年份表示(00-99)

%Y 四位数的年份表示(000-9999)

%m 月份(01-12)

%d 月内中的一天(0-31)

%H 24小时制小时数(0-23)

%I 12小时制小时数(01-12)

%M 分钟数(00=59)

%S 秒(00-59)

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366)

%p 本地A.M.或P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

js 获取django某个表的时间格式怎么处理

不在form里,也不会被提交啊,你用firebug都看不到POST的内容,要么你写在form里,要么你用JS对这个加到form的submit里,这样就一起提交了

结语:以上就是首席CTO笔记为大家介绍的关于django取时间怎么转换成本地时间格式的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/46034.html