Python 标准库:datetime

您所在的位置:网站首页 python转换日期为datatime Python 标准库:datetime

Python 标准库:datetime

2023-04-14 03:13| 来源: 网络整理| 查看: 265

获取代表当前日期和时间的 datetime 对象从指定的日期和时间获取 datetime 对象datetime 对象与 timestamp(时间戳)的相互转换datetime 对象转换为 timestamptimestamp 转换为 datetime 对象datetime 对象与字符串的相互转换字符串转 datetimedatetime 转字符串datetime 加减改变 datetime 对象的时区信息

获取代表当前日期和时间的 datetime 对象from datetime import datetimenow = datetime.now()print(now) # 2020-01-08 00:16:12.865886

从指定的日期和时间获取 datetime 对象from datetime import datetimedt = datetime(2020, 1, 7, 23, 59)print(dt) # 2020-01-07 23:59:00

datetime 对象与 timestamp(时间戳)的相互转换

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

timestamp 的值与时区毫无关系,因为 timestamp 一旦确定,其 UTC 时间就确定了,转换到任意时区的时间也是完全确定的,这就是为什么计算机存储的当前时间是以 timestamp 表示的,因为全球各地的计算机在任意时刻的 timestamp 都是完全相同的。

datetime 对象转换为 timestampfrom datetime import datetimedt = datetime(2020, 1, 7, 23, 59)dt.timestamp() # 1578412740.0

:::warning 注意:Python 的 timestamp 是一个浮点数,整数位表示秒数,小数位表示毫秒数。而 JavaScript、Java 等语言中,timestamp 是一个整数,表示毫秒数。 :::

timestamp 转换为 datetime 对象from datetime import datetimet = 1578412740.0dt = datetime.fromtimestamp(t)print(dt) # 2020-01-07 23:59:00

datetime 对象与字符串的相互转换

字符串转 datetimefrom datetime import datetimedt = datetime.strptime("2020-1-7 23:59:59", "%Y-%m-%d %H:%M:%S")print(dt) # 2020-01-07 23:59:00

:::info 字符串 %Y-%m-%d %H:%M:%S 规定了日期和时间的格式。详细的说明可以参考 Python 文档。 :::

datetime 转字符串from datetime import datetimenow = datetime.now()strdt = now.strftime("%a, %b %d %H:%M")print(strdt) # Wed, Jan 08 00:38

datetime 加减from datetime import datetime, timedelta # 需要导入 timedelta 类now = datetime.now()print(now) # 2020-01-08 00:41:15.807337dt1 = now + timedelta(days=1)print(dt1) # 2020-01-09 00:41:15.807337dt2 = now - timedelta(hours=5, days=3)print(dt2) # 2020-01-04 19:41:15.807337

改变 datetime 对象的时区信息

datetime 对象默认使用是本地时区,即如果在国内,用的是 UTC+08:00。

所以下面这种情况下计算的时间戳是错的:

from datetime import datetimedt = datetime.fromisoformat('2022-02-19T10:08:53.000000')dt.timestamp()

2022-02-19T10:08:53.000000 是符合 ISO 8601 格式的 UTC 时间,然而 datetime.fromisoformat() 将其当作 UTC+08:00 时间转换成了 datetime 对象,因此使用 dt.timestamp() 获取的时间戳比实际想得到的时间戳慢 8 小时。

怎么解决呢?

import pytzfrom datetime import datetimedt = datetime.fromisoformat('2022-02-19T10:08:53.000000')dt = dt.replace(tzinfo=pytz.utc) # 将时区信息转换为 UTCdt.timestamp()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3