美文网首页Python养成记
19、基本日期和时间类型:datetime

19、基本日期和时间类型:datetime

作者: 魔方宫殿 | 来源:发表于2022-04-03 22:52 被阅读0次
    Life is short, you need Python!

    上集回顾:

    1. 向上取整:math.ceil(x)
    2. 向下取整:math.floor(x)
    3. 阶乘:math.factorial(x)
    4. 最大公约数:math.gcd(*integers)
    5. 平方根:math.sqrt(x)
    6. 其他:math.pi、math.e

    上集学习了常用的数学函数,这集来学习日期和时间相关的函数。datetime库包含了time、date和datetime三个类。time是时间类,包含有时分秒三个属性;date是日期类,包含年月日三个属性;datetime整合了date和time两个类的方法和属性。所以本集主要学习datetime类,相当于三个都学习了,如果需要单独使用日期或者时间的话,导入对应的类就行了。

    一、构造器
    按指定日期和时间生成对应datetime类的对象。
    class datetime.datetime(year, month, day, hour=0, minute=0, second=0)
    year, monthday 参数是必须的。参数必须是在下面范围内的整数:

    • MINYEAR <= year <= MAXYEAR,
    • 1 <= month <= 12,
    • 1 <= day <= 指定年月的天数,
    • 0 <= hour < 24,
    • 0 <= minute < 60,
    • 0 <= second < 60
      例如构造2008年8月8日8点8分8秒的对象:
    >>> from datetime import datetime
    >>> dt = datetime(2008, 8, 8, 8, 8, 8)
    >>> dt
    datetime.datetime(2008, 8, 8, 8, 8, 8)
    >>> dt.year
    2008
    >>> dt.day
    8
    >>> dt.month
    8
    >>> dt.hour
    8
    >>> dt.minute
    8
    >>> dt.second
    8
    

    二、解析时间

    1. datetime.fromtimestamp(timestamp)
      通过POSIX时间戳解析到对应的datetime对象:
    >>> datetime.fromtimestamp(1)
    datetime.datetime(1970, 1, 1, 8, 0, 1)
    >>> datetime.fromtimestamp(0) #时间戳最开始的日期
    datetime.datetime(1970, 1, 1, 8, 0)
    
    1. datetime.fromisoformat(date_string)
      通过解析iso格式的日期时间字符串得到对应的datetime对象:
    >>> 
    datetime.fromisoformat('2022-04-01')
    datetime.datetime(2022, 4, 1, 0, 0)
    >>> datetime.fromisoformat('2022-04-01 22:22:22')
    datetime.datetime(2022, 4, 1, 22, 22, 22)
    >>> datetime.fromisoformat('2022-04-01 22')
    datetime.datetime(2022, 4, 1, 22, 0)
    >>> datetime.fromisoformat('2022-04-01 22:1')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: Invalid isoformat string: '2022-04-01 22:1'
    

    注意:除年份外,月、日、时、分和秒都需要用2位数表示,不然会解析出错。

    三、当前时间
    获取当前时间的对象可以通过today()和now()两个函数得到,分别来自date和time类。

    >>> datetime.today()
    datetime.datetime(2022, 4, 3, 22, 5, 1, 679597)
    >>> datetime.now()
    datetime.datetime(2022, 4, 3, 22, 5, 8, 215642)
    

    还可以通过当前时间的时间戳解析出当前时间的对象:

    >>> import time
    >>> from datetime import datetime
    >>> datetime.fromtimestamp(time.time())
    datetime.datetime(2022, 4, 3, 22, 27, 55, 451387)
    

    四、格式化
    strftime(format) 方法,可以根据format的规则把时间格式化成对应的字符串。常用规则:

    指令 含义 示例
    %Y 十进制数表示的带世纪的年份。 2008、2022
    %y 补零后,以十进制数表示的,不带世纪的年份。 08、22
    %m 补零后,以十进制数显示的月份。 01, 02, ..., 12
    %d 补零后,以十进制数显示的月份中的一天。 01, 02, ..., 31
    %H 以补零后的十进制数表示的小时(24 小时制)。 00, 02, ..., 23
    %I 以补零后的十进制数表示的小时(12小时制)。 01, 02, ..., 12
    %p 上午或下午 AM 或 PM 。 AM、PM
    %M 补零后,以十进制数显示的分钟。 00, 02, ..., 59
    %S 补零后,以十进制数显示的秒。 00, 02, ..., 59

    例如格式化为中文时间:

    >>> dt = datetime.now()
    >>> dt.strftime("%Y年%m月%d日 %H:%M:%S")
    '2022年04月03日 22:49:44'
    >>> dt.strftime("%Y年%m月%d日 %p %I:%M:%S")
    '2022年04月03日 PM 10:49:44'
    

    本集总结:

    1. datetime构造器
    2. 解析时间
    3. 当前时间
    4. 格式化时间

    下集见

    相关文章

      网友评论

        本文标题:19、基本日期和时间类型:datetime

        本文链接:https://www.haomeiwen.com/subject/hxgmjrtx.html