资讯专栏INFORMATION COLUMN

python -- time datetime小结

dack / 403人阅读

摘要:小结基本时间戳本地时间带格式时间带格式可以获取你想要的东西转换时间戳和时间戳转转时间戳转换字符串和转换格式化字符串和时间戳不可以基本类关系图日期和时间差值计算的第一个参数抽象类会用到没

[TOC]

python -- time datetime小结 time 基本
import time
time.time()
Out[3]: 1561107970.0175698 # 时间戳

time.localtime()
Out[4]: time.struct_time(tm_year=2019, tm_mon=6, tm_mday=21, tm_hour=17, tm_min=6, tm_sec=20, tm_wday=4, tm_yday=172, tm_isdst=0) # 本地时间带格式 time.struct_time

time.gmtime()
Out[5]: time.struct_time(tm_year=2019, tm_mon=6, tm_mday=21, tm_hour=9, tm_min=6, tm_sec=35, tm_wday=4, tm_yday=172, tm_isdst=0)# UTC时间带格式 time.struct_time

time.localtime().tm_yday
Out[6]: 172 # time.struct_time可以获取你想要的东西
转换 -- 时间戳和struct time
time_stamp = time.time()
local_struct_time = time.localtime(time_stamp) # 时间戳转struct time
time.mktime(local_struct_time)
Out[13]: 1561108315.0 # struct time 转时间戳
转换 -- 字符串和struct time
time.strftime("%Y-%m-%d, %H:%M:%S, %w", local_struct_time)
Out[16]: "2019-06-21, 17:11:55, 5"
==================================================================================
time.strptime("2019-06-21, 17:11:55, 5", "%Y-%m-%d, %H:%M:%S, %w")
Out[17]: time.struct_time(tm_year=2019, tm_mon=6, tm_mday=21, tm_hour=17, tm_min=11, tm_sec=55, tm_wday=4, tm_yday=172, tm_isdst=-1)
转换 -- 格式化字符串和时间戳 -- 不可以
time.strftime("%Y-%m-%d, %H:%M:%S, %w", time.time())
Traceback (most recent call last):
  File "C:UserszhicfengEnvsetisalatlibsite-packagesIPythoncoreinteractiveshell.py", line 2910, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "", line 1, in 
    time.strftime("%Y-%m-%d, %H:%M:%S, %w", time.time())
TypeError: Tuple or struct_time argument required
datetime
The time module is written in C, and is mostly interface to low-level operating system functions. The datetime module is written in Python.
基本

类关系图

object
    timedelta # 1. 日期和时间差值计算 2. timezone的第一个参数
    tzinfo # 抽象类
        timezone # datetime会用到
    time # 没啥大用
    date # 没啥大用
        datetime # 常用
timedelta 和 timezone
class timedelta:
    def __new__(cls, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0):
        pass
=======================================================================
dongbaqu = timedelta(hours=8) # 东八区
timezone(dongbaqu)
datetime.datetime.now(timezone.utc) # utc时间
Out[39]: datetime.datetime(2019, 6, 21, 9, 46, 30, 593920, tzinfo=datetime.timezone.utc)
datetime.datetime.now(timezone(dongbaqu)) # 东八区时间
Out[40]: datetime.datetime(2019, 6, 21, 17, 46, 34, 817637, tzinfo=datetime.timezone(datetime.timedelta(0, 28800)))
datetime
datetime.datetime.now(timezone(dongbaqu)).year
Out[41]: 2019
=======================================================================
datetime.datetime(2018,12,12,12,12,12)
Out[51]: datetime.datetime(2018, 12, 12, 12, 12, 12)
转换 -- datetime和字符串
datetime.datetime.now(timezone(dongbaqu)).strftime("%a, %d %b %Y %H:%M:%S +0000")
Out[42]: "Fri, 21 Jun 2019 17:49:35 +0000"

datetime.datetime.strptime("Fri, 21 Jun 2019 17:49:35 +0000", "%a, %d %b %Y %H:%M:%S +0000")
Out[44]: datetime.datetime(2019, 6, 21, 17, 49, 35)
转换 -- datetime和时间戳
datetime.datetime.now().timestamp()
Out[49]: 1561110815.027726

datetime.datetime.fromtimestamp(1561110815.027726)
Out[52]: datetime.datetime(2019, 6, 21, 17, 53, 35, 27726)
时间计算
datetime.datetime(2019, 6, 21, 17, 53, 35, 27726) + datetime.timedelta(hours=25)
Out[54]: datetime.datetime(2019, 6, 22, 18, 53, 35, 27726)
django 中的timezone
from django.utils import timezone

django 中提供了 timezone

django settings 中提供了 USE_TZ, TIMEZONE等参数.

个人不建议使用django中的timezone -- 会让代码变乱. 这些信息是给框架使用的. -- 譬如 serializers.DateTimeField

最佳实践

后端和数据库统一使用UTC计时,并将时区传给前端.由前端负责显示.

datetime.datetime.now(timezone.utc) # utc时间
Out[39]: datetime.datetime(2019, 6, 21, 9, 46, 30, 593920, tzinfo=datetime.timezone.utc)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/45071.html

相关文章

  • Python之时间和日期使用小结

    摘要:对于日期的操作可以说是比较常见的了日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现基本包引入主要需要引入时间和日期的处理包,后面的基本操作都是基于此获取当前时间获取当前时间,有几种方式 对于日期的操作可以说是比较常见的case了,日期与格式化字符串互转,日期与时间戳互转,日期的加减操作等,下面主要介绍下常见的需求场景如何实现 1. 基本...

    BigNerdCoding 评论0 收藏0
  • 编写一个并发性能测试的小程序

    摘要:并发线程测试循环新建线程类,并在线程体内塞入单个的测试用例,以及全局的计数类。为了让性能测试更充分,我编写了不同的计算过程,并使用随机函数随机获取并塞入线程执行。 ...

    Michael_Lin 评论0 收藏0
  • python日期时间处理总结

    摘要:用了一段时间的开发项目,也是第一次用来开发项目,所有有许多相关的知识点需要总结,本文所介绍的的日期时间处理就是最近用到的,希望对各位有所帮助,也同时作为自己的笔记储存。提供了等模块用于处理日期和时间,较为常用的还是模块。 用了一段时间的django开发web项目,也是第一次用python来开发项目,所有有许多相关的知识点需要总结,本文所介绍的python的日期时间处理就是最近用到的,希...

    DoINsiSt 评论0 收藏0
  • python tips

    摘要:中的可以起到与此处相同的效果判断奇数自然是使用位操作最快了删除要删除的数量较多超多一半的话,建议重新生成如果数量较少,在和都可以的情况下,稍快一些 给dict设置默认值 这样能设置所有key的默认值为[],包括新添的key from collections import defaultdict context = defaultdict(list) setdefault一次只能设置一个...

    fuchenxuan 评论0 收藏0
  • Python标准库datetime之datetime模块用法分析详细解答

      小编写这篇文章的主要目的,主要是给大家进行讲解关于Python相关内容的事情,主要是涉及到一些标准库里面的一些事情,比如会涉及到dateime相关的模块用法问题,下面就给大家做个比较详细解答。  1、日期时间对象  日期时间对象是指具有日期(年月日)和时间(时分秒)双重属性的实例  日期时间对象的类型为datetime.datetime  日期时间对象常用的属性有年、月、日、时、分、秒、微秒 ...

    89542767 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<