• datetime模块中及strptime与strftime的区别和使用方法


    datetime是python处理日期和时间的标准库

    获取当前日期和时间

    注意到(color{purple}{datetime})是模块,(color{purple}{datetime})模块还包括了一个(color{purple}{datetime})类,通过from  datetime  import  datetime导入的才是(color{purple}{datetime})这个类
    (color{purple}{datetime.now})返回当前日期和时间,其类型为(color{purple}{datetime})

    获取指定日期和时间

    要指定某个日期和时间,直接用参数构造一个(color{purple}{datetime})

    datetime转换成timestamp(时间戳)

    计算机中,时间实际上使用数字表示的。我们将1970年1月1日00:00:00 UTC+00:00时区的时刻称为epoch time,记为(color{purple}{0})(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数,称为timestamp

    timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00
    

    对应的北京时间是:

    timestamp = 0 = 1970-1-1 08:00:00 UTC+8:00
    

    可见timestamp的值与时区毫无关系,因为timestamp一旦确定,其UTC时间就确定了,转换到任意时区的时间也是完全确定的,这就是为什么计算机存储的当前时间是以timestamp表示的,因为全球各地的计算机在任意时刻的timestamp都是完全相同的(假定时间已校准)。
    把一个(color{purple}{datetime})类型转换成timestamp只需要简单调用(color{purple}{timestamp})方法:

    注意Python的timestamp是一个浮点数。如果有小数位,小数位表示毫秒数。

    timestamp转换为datetime

    要把timestamp转换为(color{purple}{timestamp}),使用(color{purple}{timestamp})提供的(color{purple}{fromtimestamp()})方法:

    发现timestamp是一个浮点数,它没有时区的概念,而datetime是有时区的。上述转换在timestamp和本地时间的转换 本地时间是当前操作系统设定的时区,例如北京时区是东八区,则本地时间: ``` 2020-04-15 12:20:00 ``` 实际上就是UTC+8:00时区的时间: ``` 2020-04-15 12:20:00 UTC+8:00 ``` 而此刻的格林威治标准时间与北京时间差8小时,也就是UTC+0:00时区的时间应该是: ``` 2020-04-15 4:20:00 UTC+8:00 ``` timestamp也可以直接转换成UTC标准时区的时间

    str转换为datetime

    很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过(color{purple}{datetime.strptime()})实现,需要一个日期和时间的格式化字符串:

    字符串(color{purple}{'%Y-%m-%d %H:%M:%S'})规定了日期和时间部分的格式
    注意转换后的datetime是没有时区信息的。

    datetime转换为str

    如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过(color{purple}{strftime()})实现的,同样需要一个日期和时间的格式化字符串:

    datetime加减

    对日期和时间进行加减实际上就是把datetime往后或往前计算,得到新的datetime。加减可以直接用(color{purple}{+})(color{purple}{-})运算符,不过需要导入(color{purple}{timedelta})这个类:

    >>> from datetime import datetime, timedelta
    >>> now = datetime.now()
    >>> now
    datetime.datetime(2015, 5, 18, 16, 57, 3, 540997)
    >>> now + timedelta(hours=10)
    datetime.datetime(2015, 5, 19, 2, 57, 3, 540997)
    >>> now - timedelta(days=1)
    datetime.datetime(2015, 5, 17, 16, 57, 3, 540997)
    >>> now + timedelta(days=2, hours=12)
    datetime.datetime(2015, 5, 21, 4, 57, 3, 540997)
    

    可见,使用timedelta可以容易算出前几天和后几天的时刻

    关于"本地时间转换成UTC时间","时区转换(utcnow)"可具体查看参考链接

    参考:廖雪峰python

  • 相关阅读:
    Error-Project facet Java version 1.8 is not supported
    如何运行Struts2官网最新Demo?
    Java计算两个字符串日期之间的天数差
    Mybatis XML配置
    使用本地缓存快还是使用redis缓存好?
    mysql数据统计技巧备忘录
    java中的全局变量如何实现?ThreadLocal~
    干货!一次kafka卡顿事故排查过程
    《Java 多线程编程核心技术》- 笔记
    《分布式服务框架原理与实践》- 总结一下吧
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12725074.html
Copyright © 2020-2023  润新知