详解python如何正确使用时间戳,日期,时间,时区

 更新时间:2024年11月03日 13:52:35   作者:仙草哥哥  
这篇文章主要为大家介绍了如何在python中正确使用时间戳,日期,时间,时区,文中通过简单的示例进行了详细介绍,希望对大家有一定的帮助

时间概念

utc与时区

UTC是Coordinated Universal Time的缩写,是全球时间的标准,UTC时间不受时区和夏令时的影响,是时间的标准。全球各地的时间以UTC时间为参考进行调整。

时区是Time Zone,是地球上按照经度划分的区域,每个区域有自己的标准时间,时区与UTC时间的差距通常以小时为单位(但有些时区偏移的时间有30分钟)。整个地球被划分为24个主要时区,每个时区大约覆盖15度经度(360度/24小时)

北京时间是东八区,东八区也就是比UTC时间偏移了8小时,也就是UTC+8,在世界上,同样在东八区的,还有澳大利亚的地区。

纽约时间是西五区,也就是UTC-5,因此,距离北京时间的东八区标准时间差是13小时。但是需要注意的是,当纽约地区开始夏令时的时候,会变成UTC-4,此时就是常见的12小时时差了。

东京时间是东九区,也就是UTC+9,因此,距离北京时间的东八区差是1小时,且是早1小时。

夏令时

夏令时是一种人为调整时钟的制度,通常在春季将时钟向前调一个小时,其目的是延长晚间的日照时间,旨在更有效地利用日光资源,减少能源消耗。

其中,北半球的高纬度国家通常使用夏令时,因为其纬度高,日照变化大。与之相反,接近赤道的地区,日照变化不大,因此通常不用夏令时。例如大部分亚洲国家,如中国,日本,韩国,都不使用夏令时。

没有使用过夏令时地区的人,通常对于夏令时的作用不太了解,具体来说:夏令时期间,时钟被拨快一小时。这意味着人们按照新的时间表作息,早上实际比平时早起一小时,但由于夏季天亮较早,对生活影响不大。下午下班时,按照新的时间,天色仍然明亮,人们可以在下班后享受更多的日照时间。

时间戳

时间戳是Timestamp是一种表示特定时间点的数字格式,基于UTC时间的1970年1月1日00:00:00以来经过的秒数或毫秒数来表示,时间戳可以精确地标识一个具体的时间点,该时间点不受时区影响。

时间戳在编程中有很大作用,例如,记录某个系统事件,用户注册的时间,或者通过计算时间戳的差,来计算时间间隔。

time

通用格式化

time主要处理时间的获取和简单的格式化,如果需要更复杂的日期和时间操作,应该尝试使用datetime

常用的格式化字符串方式如下所示,并且datetime中同样也这样使用

  • %Y:四位年份
  • %m:两位月份(01-12)
  • %d:两位日期(01-31)
  • %H:两位小时(00-23)
  • %M:两位分钟(00-59)
  • %S:两位秒(00-59)

时间戳

获取当前时间戳

import time
 
timestamp = time.time()
print("当前时间戳:", timestamp)

时间戳可以用于记录时间间隔,不过,如果要更精准的计时可以用

import time
 
start = time.perf_counter()
time.sleep(2)
end = time.perf_counter()
print(f"操作耗时: {end - start} 秒")

时间戳转为时间对象

时间戳转换为struct_time本地时间

timestamp = time.time()
local_time = time.localtime(timestamp)
print("本地时间:", local_time)

将时间戳转换为utc时间

timestamp = time.time()
utc_time = time.gmtime(timestamp)
print("UTC时间:", utc_time)

时间对象转为时间戳

import time
 
struct = time.strptime("2024-11-02 22:00:00", "%Y-%m-%d %H:%M:%S")
timestamp = time.mktime(struct)
print("时间戳:", timestamp)  # 时间戳: 1730556000.0

时间格式化

将一个时间戳快速转为可读时间

timestamp = time.time()
readable_time = time.ctime(timestamp)
print(readable_time)  # 格式如Sat Nov  2 10:32:27 2024

根据时间字符串,创建时间对象

time_str = "2024-11-02 22:00:00"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
 
print(parsed_time)

根据时间对象,转为字符串

time_str = "2024-11-02 22:00:00"
parsed_time = time.strptime(time_str, "%Y-%m-%d %H:%M:%S")
 
formatted_time = time.strftime("%Y年%m月%d日%H点%M分", parsed_time)
print("格式化时间:", formatted_time)  # 格式化时间:2024年11月02日22点00分

时间暂停

时间是不会暂停的,实际上该功能是程序暂停

import time
 
print("暂停前")
time.sleep(3)  # 暂停3秒
print("暂停后")

datetime

date日期

获取当前日期

today = datetime.date.today()
print("今天的日期:", today)  # 格式如2024-11-02

datetime日期时间

获取当前时间

now_time = datetime.datetime.now().time()
print("当前时间:", now_time)  # 格式如10:46:50.506231

获取当前日期与时间

now = datetime.datetime.now()
print("当前日期和时间:", now)  # 格式如2024-11-02 10:47:44.299445

获取UTC时间

utc_now = datetime.datetime.utcnow()
print("UTC时间:", utc_now)

创建日期时间对象

创建日期对象

specific_date = datetime.date(2024, 11, 2)
print("特定日期:", specific_date)

创建时间对象

specific_time = datetime.time(22, 0, 0)
print("特定时间:", specific_time)

创建日期时间对象

specific_datetime = datetime.datetime(2024, 11, 2, 22, 0, 0)
print("特定日期和时间:", specific_datetime)

时间字符串格式化与解析

时间字符串格式化

now = datetime.datetime.now()
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化日期时间:", formatted)

时间字符串解析

time_str = "2024-11-2 22:00:00"
parsed_datetime = datetime.datetime.strptime(time_str, "%Y-%m-%d %H:%M:%S")
print("解析后的日期时间对象:", parsed_datetime)

时间间隔

使用timedelta计算时间间隔的日期

from datetime import date, timedelta
 
today = date.today()
future_date = today + timedelta(days=10)
print("10天后的日期:", future_date)
 
past_date = today - timedelta(weeks=1)
print("一周前的日期:", past_date)

计算时间间隔的日期时间

from datetime import datetime, timedelta
 
now = datetime.now()
 
future_time = now + timedelta(minutes=10)
print("10分钟后的日期时间:", future_time)
 
past_time = now - timedelta(hours=2)
print("2小时前的日期时间:", past_time)

zoneinfo

时间转换

在python 3.9以后,引入了zoneinfo用于处理时区,并且能够直接用于datetime

from datetime import datetime
from zoneinfo import ZoneInfo
 
now_utc = datetime.now(ZoneInfo("UTC"))
print("UTC时间:", now_utc)
 
# 转换为北京时间
now_beijing = now_utc.astimezone(ZoneInfo("Asia/Shanghai"))
print("北京时间:", now_beijing)
 
# 转换为纽约时间
now_newyork = now_utc.astimezone(ZoneInfo("America/New_York"))
print("纽约时间:", now_newyork)

实际上,时间转换也可以自行进行计算,例如,我们已经了解了北京时间是UTC+8,纽约时间是UTC-5

from datetime import datetime, timedelta
 
now_utc = datetime.utcnow()
print("UTC时间:", now_utc)
 
now_beijing = now_utc + timedelta(hours=8)
print("北京时间:", now_beijing)
 
now_newyork = now_utc - timedelta(hours=5)
print("纽约时间:", now_newyork)

列出所有时区

所有时区

import zoneinfo
 
print(zoneinfo.available_timezones())

遍历找到其中的Asia时区

import zoneinfo
 
for zone in zoneinfo.available_timezones():
    if "Asia" in zone:
        print(zone)

获取时区时间

如果在使用当前时间的时候,总是自行设置本地时区的时间,而不依赖于机器设置,可以获得更好的跨平台性

from datetime import datetime
from zoneinfo import ZoneInfo
 
tz_shanghai = ZoneInfo("Asia/Shanghai")
tz_newyork = ZoneInfo("America/New_York")
 
now_shanghai = datetime.now(tz_shanghai)
now_newyork = datetime.now(tz_newyork)
 
print("北京时间:", now_shanghai)
print("纽约时间:", now_newyork)

以上就是详解python如何正确使用时间戳,日期,时间,时区的详细内容,更多关于python时间的资料请关注脚本之家其它相关文章!

相关文章

  • python中比较两个列表的实例方法

    python中比较两个列表的实例方法

    在本篇文章里小编给各位分享了关于python中比较两个列表的实例方法以及相关代码,需要的朋友们参考下。
    2019-07-07
  • python单测框架之pytest常见用法

    python单测框架之pytest常见用法

    pytest是python的单测框架,使用灵活,插件丰富,本文给大家分享python单测框架之pytest常见用法包括pytest常见的插件,感兴趣的朋友跟随小编一起看看吧
    2021-08-08
  • Python使用Docling库玩转文档处理

    Python使用Docling库玩转文档处理

    Docling 是一个强大的 Python 第三方库,专注于文档处理和转换,所以本文将带大家深入了解 Docling 的强大功能,展示它如何帮助我们高效处理文档,感兴趣的可以了解下
    2025-02-02
  • python用socket实现协议TCP长连接框架

    python用socket实现协议TCP长连接框架

    大家好,本篇文章主要讲的是python用socket实现协议TCP长连接框架,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

    python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

    这篇文章主要给大家介绍了关于python DataFrame中stack()方法、unstack()方法和pivot()方法的相关资料,pandas中这三种方法都是用来对表格进行重排的,其中stack()是unstack()的逆操作,需要的朋友可以参考下
    2022-04-04
  • 对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    对python 数据处理中的LabelEncoder 和 OneHotEncoder详解

    今天小编就为大家分享一篇对python 数据处理中的LabelEncoder 和 OneHotEncoder详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 详解用Python进行时间序列预测的7种方法

    详解用Python进行时间序列预测的7种方法

    这篇文章主要介绍了详解用Python进行时间序列预测的7种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 基于python实现弱密码检测工具

    基于python实现弱密码检测工具

    Python中一个强大的加密模块,提供了许多常见的加密算法和工具,本文我们将使用Python编写一个弱密码检测工具,感兴趣的小伙伴可以了解一下
    2024-01-01
  • Python中数字类型“/”和“//”的使用及区别

    Python中数字类型“/”和“//”的使用及区别

    文章主要介绍了Python中的两种除法运算符:`/` 和 `//`,`/` 表示普通的除法,而 `//` 表示地板除,即向下取整,文章还提到了 `divmod()` 函数,它可以同时计算两数的地板除结果和取余结果
    2026-03-03
  • python实现飞机大战(面向过程)

    python实现飞机大战(面向过程)

    这篇文章主要为大家详细介绍了python面向过程实现飞机大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论