详解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时间的资料请关注脚本之家其它相关文章!

相关文章

  • PyQt5简单读取以及显示图片的应用实例

    PyQt5简单读取以及显示图片的应用实例

    我们在进行图像处理时,经常会用到读取图片并显示出来这样的操作,下面这篇文章主要给大家介绍了关于PyQt5简单读取以及显示图片应用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • 对Python random模块打乱数组顺序的实例讲解

    对Python random模块打乱数组顺序的实例讲解

    今天小编就为大家分享一篇对Python random模块打乱数组顺序的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • 解读MaxPooling1D和GlobalMaxPooling1D的区别

    解读MaxPooling1D和GlobalMaxPooling1D的区别

    这篇文章主要介绍了MaxPooling1D和GlobalMaxPooling1D的区别及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python预测分词的实现

    Python预测分词的实现

    本文将结合实例代码,介绍Python预测分词的实现,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • Python实现时钟显示效果思路详解

    Python实现时钟显示效果思路详解

    这篇文章主要介绍了Python实现时钟显示,需要的朋友可以参考下
    2018-04-04
  • Python实现遍历大量表格文件并筛选出数据缺失率低的文件

    Python实现遍历大量表格文件并筛选出数据缺失率低的文件

    这篇文章主要为大家详细介绍了如何利用Python实现遍历大量表格文件并筛选出表格内数据缺失率低的文件的功能,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05
  • matplotlib实现数据实时刷新的示例代码

    matplotlib实现数据实时刷新的示例代码

    这篇文章主要介绍了matplotlib实现数据实时刷新的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • Python中DataFrame与内置数据结构相互转换的实现

    Python中DataFrame与内置数据结构相互转换的实现

    pandas 支持我们从 Excel、CSV、数据库等不同数据源当中读取数据,来构建 DataFrame。但有时数据并不来自这些外部数据源,这就涉及到了 DataFrame 和 Python 内置数据结构之间的相互转换,本文就来和大家详细聊聊
    2023-02-02
  • python多线程方式执行多个bat代码

    python多线程方式执行多个bat代码

    这篇文章主要为大家详细介绍了python多线程方式执行多个bat的实现代码,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Python利用matplotlib绘制约数个数统计图示例

    Python利用matplotlib绘制约数个数统计图示例

    这篇文章主要介绍了Python利用matplotlib绘制约数个数统计图,结合实例形式详细分析了Python使用matplotlib进行统计图绘制的相关操作技巧,需要的朋友可以参考下
    2019-11-11

最新评论