Python 时间操作datetime详情(下)

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的列表类型提供了方便的操作方法,可以很简单地完成这些计算。 2. 列表操作 在Python中,列表是一种有序的数据结构,可以存放任何类型的数据,包括数字和字符串等。Python提供了多种方法来处理列表,比如切片、迭代、遍历等。 对于…

    python 2023年6月5日
    00
  • vue 事件获取当前组件的属性方式

    获取当前组件的属性是Vue组件中经常需要用到的操作。下面是完整的攻略过程: 在Vue组件内部定义事件处理函数,事件处理函数有一个默认的参数,称为事件对象,它包含了当前的Vue实例对象。 通过事件对象可以获取到该组件的属性,属性在Vue组件中存储在$this对象中。 使用$this对象可访问到Vue组件的属性和方法。其中,属性可用于显示数据,方法可用于业务逻辑…

    python 2023年6月13日
    00
  • Python必备技巧之函数的使用详解

    Python必备技巧之函数的使用详解 什么是函数 函数是一段可重复使用的代码块,它可以接受参数,执行一定的逻辑处理,然后返回值。在Python中,函数的定义是通过 def 关键字来实现的。 函数的定义 函数的定义通常包括以下几个部分: def function_name(parameters): """ Docstring. 对…

    python 2023年6月2日
    00
  • Python使用MD5加密字符串示例

    下面是“Python使用MD5加密字符串示例”的完整攻略。 具体步骤 步骤1:导入hashlib 首先,我们需要导入Python的hashlib模块,以便使用其中的MD5加密功能。在Python中,可以通过以下方式导入hashlib模块: import hashlib 步骤2:创建MD5加密对象 要使用MD5加密字符串,我们需要创建一个MD5加密对象。创建方…

    python 2023年6月2日
    00
  • Python中%r和%s的详解及区别

    Python中 %r 和 %s 的详解及区别 在 Python 中,可以使用 % 操作符来格式化字符串。其中 %s 和 %r 打印出来的字符串基本相同,但有时候它们输出的内容可能会有不同。本文将详细讲解 %s 和 %r 在 Python 中的使用。 什么是字符串格式化? 字符串格式化是指将一个字符串模板中的占位符替换为真正的数据。在 Python 中,以下方…

    python 2023年6月3日
    00
  • python遗传算法之单/多目标规划问题

    Python遗传算法之单/多目标规划问题 遗传算法是一种基于自然选择和遗传机制的优化算法,它可以用于解决单多目标规划问题。在Python中,我们可以使用遗传法库DEAP来实现遗传算法,并使用SciPy库来解决单/多目标划问题。本文将介绍如何使用Python实现遗传算法解决单/多目标规划问题,包括两个示例说明。 单目标规划问题 单目标规划问题是指在给定的约束条…

    python 2023年5月14日
    00
  • 详解Python3 pandas.merge用法

    详解Python3 pandas.merge用法 在数据分析和清洗中,数据合并是极其常见的步骤,而Pandas的merge函数则是最为强大、方便的工具之一。merge函数可以轻松合并两个或多个数据框,并支持非常灵活的合并选项。本文将详细介绍Pandas的merge函数的用法并附带两个基本的示例。 merge函数概述 merge函数用于将两个或多个数据框连接在…

    python 2023年6月2日
    00
  • 在python中如何建立一个自己的包

    在Python中,我们可以把相关的功能函数或类封装成模块,以便在其他地方重复使用。而当我们有多个相关模块时,为了方便管理和使用,就可以将它们打包成一个完整的包(package)。 下面是建立一个自己的包的完整攻略。 1. 创建包目录 第一步是创建一个包目录。这个目录要满足以下要求: 目录名可以是任何合法的标识符,通常采用小写字母和下划线组成,比如my_pac…

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