Python 时间操作datetime详情(下)

yizhihongxing

Python 时间操作datetime详情(下)

在《Python 时间操作datetime详情(上)》中,我们已经介绍了 date, time, datetime 对象的基本方法。在本篇文章中,我们将继续介绍 datetime 对象的进阶用法。

一、字符串和 datetime 之间的转换

  1. datetime 对象转字符串

datetime 对象可以使用 strftime() 方法将其转换为字符串,该方法需要传入一个格式化字符串。格式化字符串中用 % 和字母的组合表示不同的时间元素,如下所示:

格式 含义
%Y 年(四位)
%y 年(两位)
%m
%d
%H 时(24小时制)
%I 时(12小时制)
%M
%S
%p 上午/下午

例如,将当前时间转换为字符串并以 YYYY-MM-DD HH:MM:SS 的格式输出:

import datetime

now = datetime.datetime.now()
str_now = now.strftime('%Y-%m-%d %H:%M:%S')
print(str_now)  # 2022-06-03 14:10:23
  1. 字符串转 datetime 对象

datetime 对象可以使用 strptime() 方法将字符串转换为 datetime 对象,该方法需要传入两个参数:字符串和格式化字符串。格式化字符串与 strftime() 方法中的用法相同,不同的是,字符串中应包含与格式化字符串对应的时间元素。例如,将字符串 '2022-06-03 14:10:23' 转换为 datatime 对象:

import datetime

str_now = '2022-06-03 14:10:23'
now = datetime.datetime.strptime(str_now, '%Y-%m-%d %H:%M:%S')
print(now)  # 2022-06-03 14:10:23

二、时区的设置和转换

  1. 时区的设置

datetime 模块中的 datetime 对象默认没有时区信息,通常使用 pytz 模块来设置时区。可以使用 pytz 模块中的 timezone() 方法创建时区对象,然后使用 datetime 对象的 replace() 方法改变时区信息。例如,将当前时间从 UTC 时间转换为北京时间(东八区):

import datetime
import pytz

utc_now = datetime.datetime.utcnow()  # 获取当前 UTC 时间
utc_timezone = pytz.timezone('UTC')  # 创建 UTC 时区对象
utc_now = utc_timezone.localize(utc_now)  # 将 UTC 时间转换为含时区信息的 datetime 对象

beijing_timezone = pytz.timezone('Asia/Shanghai')  # 创建北京时区对象
beijing_now = utc_now.astimezone(beijing_timezone)  # 将 utc_now 转换为北京时间

print(beijing_now)  # 2022-06-03 22:26:07.363000+08:00
  1. 时区的转换

通过 replace() 方法可以快速地将 datetime 对象的时区信息转换成其他时区。例如,将北京时间转换为纽约时间:

import datetime
import pytz

beijing_now = datetime.datetime.now(pytz.timezone('Asia/Shanghai'))  # 获取当前北京时间

new_york_timezone = pytz.timezone('America/New_York')  # 创建纽约时区对象
new_york_now = beijing_now.replace(tzinfo=pytz.timezone('Asia/Shanghai')).astimezone(new_york_timezone)

print(new_york_now)  # 2022-06-03 10:29:10.568986-04:00

三、示例代码

下面是一个完整的示例代码,包括将日期字符串转换为 datetime 对象、将时区从 UTC 转换为北京时间、并将北京时间转换为纽约时间。

import datetime
import pytz

str_date = '2022-06-03 00:00:00'

# 将字符串转换为datetime对象(默认时区为本地时区)
dt = datetime.datetime.strptime(str_date, '%Y-%m-%d %H:%M:%S')

# 将时区从本地时区转换为UTC时区
local_tz = pytz.timezone('Asia/Shanghai')
utc_tz = pytz.timezone('UTC')
dt = local_tz.localize(dt).astimezone(utc_tz)

# 将时区从UTC时区转换为北京时间
beijing_tz = pytz.timezone('Asia/Shanghai')
dt = dt.astimezone(beijing_tz)

# 将北京时间转换为纽约时间
new_york_tz = pytz.timezone('America/New_York')
dt = dt.replace(tzinfo=beijing_tz).astimezone(new_york_tz)

print(dt)  # 2022-06-02 12:00:00-04:00

以上是本篇文章的全部内容,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 时间操作datetime详情(下) - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python学习之日志模块详解

    接下来我将详细讲解“Python学习之日志模块详解”的完整攻略。该攻略主要涉及以下几个方面: 什么是日志模块? 日志模块的基本使用方法 日志模块的高级用法 日志模块示例说明 1. 什么是日志模块? 日志是程序运行过程中记录运行状态、错误信息等关键信息的重要工具。Python自带的logging标准库,提供了日志模块,可以方便地进行日志操作。 2. 日志模块的…

    python 2023年5月13日
    00
  • Python真题案例之蛇形数组详解

    Python真题案例之蛇形数组详解 本文将对Python中蛇形数组的生成过程做详细讲解,包含以下内容: 蛇形数组的概念及生成过程 Python代码实现 两条示例说明 蛇形数组的概念及生成过程 蛇形数组,又称之为蛇形矩阵,指的是由数字按照螺旋或者曲折的方式填写成的二维数组。它最明显的特点就是数字的填充形状呈蛇形状。 蛇形数组是由外向内依次填充数字,类似于绕着一…

    python 2023年6月6日
    00
  • python的Template使用指南

    Python的Template使用指南 在Python中,Template是一个字符串模板类,它提供了一种简单的方式来格式化字符串。本文将介绍Python的Template使用指南,包括Template的基本用法、变量替换、转义字符、自定义分隔符和示例说明。 Template的基本用法 在Python中,我们可以使用Template类来创建一个字符串模板。以…

    python 2023年5月14日
    00
  • Python Handler处理器和自定义Opener原理详解

    PythonHandler处理器和自定义Opener原理详解 在Python中,我们可以使用urllib库中的PythonHandler处理器和自定义Opener来处理HTTP请求。本文将详细介绍PythonHandler处理器和自定义Opener的原理,并提供两个示例。 PythonHandler处理器 PythonHandler处理器是urllib库中的…

    python 2023年5月15日
    00
  • Redis 集群模式有哪些?各自有什么优缺点?

    Redis 集群模式有哪些?各自有什么优缺点? Redis 集群模式是一种分布式解决方案,可以将多个 Redis 实例组成一个集群,以实现数据的分片和高可用。Redis 集群模式由多个 Redis 节点组成,每个节点负责存储部分数据,同时也可以作为其他节点的备份节点,以实现高可用。 Redis 集群模式的实现方式有两种:Redis Cluster 和 Red…

    python 2023年5月12日
    00
  • python读取相对路径和绝对路径的方法

    下面我来详细讲解一下“python读取相对路径和绝对路径的方法”的攻略。 相对路径和绝对路径 在开始介绍方法前,先简单介绍一下相对路径和绝对路径。 相对路径:基于当前脚本所在位置,向上(..)或向下(.)查找文件或文件夹的路径。例如:”./data/test.txt”表示data文件夹下的test.txt文件。 绝对路径:文件或文件夹在文件系统中具体的路径位…

    python 2023年6月2日
    00
  • python标准库OS模块函数列表与实例全解

    下面就为大家介绍一下“Python标准库OS模块函数列表与实例全解”的攻略。 1. OS模块简介 OS模块是Python语言中的一个标准库,它提供了许多与操作系统交互的函数。使用OS模块可以实现操作文件和目录、进程管理、网络通信等功能。本攻略主要介绍OS模块的函数列表和实例。 2. OS模块函数列表 2.1 文件和目录操作 os.chdir(path):改变…

    python 2023年5月30日
    00
  • 基于PyQt5制作一个windows通知管理器

    下面是制作一个Windows通知管理器的完整攻略,包含以下步骤: 步骤一:安装并学习PyQt5 PyQt5是基于Python的GUI框架,用于创建跨平台的应用程序。首先需要安装PyQt5,可以使用pip工具来安装: pip install PyQt5 然后需要学习PyQt5的基础知识,包括信号与槽、控件、布局等。 步骤二:创建主界面 首先需要创建一个主界面,…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部