将日期字符串解析为带时区的日期时间

2023-12-24

我有一个字符串:

r = 'Thu Dec 17 08:56:41 CST 2020'

这里CST代表中国中部时间('亚洲/上海')。我想将它解析为日期时间...我正在做类似的事情

from dateparser import parse
r1 = parse(r)

这给了我 r1 作为:

2020-12-17 08:56:41-06:00

而且我也在做这个

r2 = r1.replace(tzinfo=pytz.timezone("Asia/Shanghai"))

这给了我 r2 :

 2020-12-17 08:50:41+08:00

r2 有 6 分钟的延迟有人能告诉我为什么吗?以及如何正确地将我的原始字符串 r1 传输到所需的 r2 ,即:

2020-12-17 08:56:41 in Asia/Shanghai timezone

Thanks


Using dateutil.parser您可以直接正确解析您的日期。

注意CST是一个不明确的时区,因此您需要指定您所指的时区。您可以直接在tzinfos的参数parse()调用或者您可以定义一个具有时区映射的字典并传递它。在此字典中,您可以指定偏移量,例如

timezone_info = {
        "CDT": -5 * 3600,
        "CEST": 2 * 3600,
        "CST": 8 * 3600
}

parser.parse(r, tzinfos=timezone_info)

或(使用gettz) 直接指定时区:

timezone_info = {
        "CDT": gettz("America/Chicago"),
        "CEST": gettz("Europe/Berlin"),
        "CST": gettz("Asia/Shanghai")
}

parser.parse(r, tzinfos=timezone_info)

另请参阅dateutil.parser 文档 https://dateutil.readthedocs.io/en/stable/parser.html以及答案这个问题 https://stackoverflow.com/q/51206500/14015737.

请注意,如果您所在的位置实行夏令时,则后一种方法会很棘手!根据您申请的日期,gettz("America/Chicago")结果将是 UTC-5 或 UTC-6(因为芝加哥在中部标准时间和中部夏令时间之间切换)。因此,根据您的输入数据,第二个示例实际上可能并不正确并产生错误的结果!目前,中国全年遵守中国标准时间 (CST),因此对于您的用例而言,这没有什么区别(但可能取决于您的日期范围)。

Overall:

from dateutil import parser
from dateutil.tz import gettz

timezone_info = {"CST": gettz("Asia/Shanghai")}

r = 'Thu Dec 17 08:56:41 CST 2020'
d = parser.parse(r, tzinfos=timezone_info)

print(d)
print(d.strftime('%Y-%m-%d %H:%M:%S %Z%z'))

gets you

2020-12-17 08:56:41+08:00
2020-12-17 08:56:41 CST+0800

EDIT:使用这种方法打印人类可读的时区名称而不是缩写的名称只是稍微复杂一点,因为dateutil.tz.gettz()给你一个tzfile没有属性,只有名称。但是,您可以通过受保护的方式获取它_filename using split():

print(d.strftime('%Y-%m-%d %H:%M:%S') + " in " + "/".join(d.tzinfo._filename.split('/')[-2:]))

yields

2020-12-17 08:56:41+08:00 in Asia/Shanghai

这当然只有在你使用过的情况下才有效gettz()首先设置时区。

EDIT 2: 如果你know不管怎样,你所有的日期都是 CST,你也可以在解析时忽略时区。这会让你得到天真的(或无意识的)日期时间,然后你可以在其中添加人类可读的时区。您可以使用以下方法执行此操作replace()并指定时区,如上所示使用gettz()或使用timezone(()来自pytz module:

from dateutil import parser
from dateutil.tz import gettz
import pytz

r = 'Thu Dec 17 08:56:41 CST 2020'
d = parser.parse(r, ignoretz=True)

d_dateutil = d.replace(tzinfo=gettz('Asia/Shanghai'))
d_pytz = d.replace(tzinfo=pytz.timezone('Asia/Shanghai'))

请注意,根据您使用哪个模块添加时区信息,tzinfo不同。为了pytz对象,有一种更直接的方法以人类可读的形式访问时区:

print(type(d_dateutil.tzinfo))
print("/".join(d_dateutil.tzinfo._filename.split('/')[-2:]))

print(type(d_pytz.tzinfo))
print(d_pytz.tzinfo.zone)

produces

<class 'dateutil.tz.tz.tzfile'>
Asia/Shanghai
<class 'pytz.tzfile.Asia/Shanghai'>
Asia/Shanghai
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将日期字符串解析为带时区的日期时间 的相关文章

  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 为什么从 Pandas 1.0 中删除了日期时间?

    我在 pandas 中处理大量数据分析并每天使用 pandas datetime 最近我收到警告 FutureWarning pandas datetime 类已弃用 并将在未来版本中从 pandas 中删除 改为从 datetime 模块
  • 与区域指示符字符类匹配的 python 正则表达式

    我在 Mac 上使用 python 2 7 10 表情符号中的标志由一对表示区域指示符号 https en wikipedia org wiki Regional Indicator Symbol 我想编写一个 python 正则表达式来在
  • 将 time.Time 转换为字符串

    我正在尝试将数据库中的一些值添加到 string在围棋中 其中一些是时间戳 我收到错误 无法在数组元素中使用 U Created date 类型 time Time 作为类型字符串 我可以转换吗time Time to string typ
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • Python zmq SUB 套接字未接收 MQL5 Zmq PUB 套接字

    我正在尝试在 MQL5 中设置一个 PUB 套接字 并在 Python 中设置一个 SUB 套接字来接收消息 我在 MQL5 中有这个 include
  • 如何使用 Pandas、Numpy 加速 Python 中的嵌套 for 循环逻辑?

    我想检查一下表的字段是否TestProject包含了Client端传入的参数 嵌套for循环很丑陋 有什么高效简单的方法来实现吗 非常感谢您的任何建议 def test parameter a list parameter b list g
  • YOLOv8获取预测边界框

    我想将 OpenCV 与 YOLOv8 集成ultralytics 所以我想从模型预测中获取边界框坐标 我该怎么做呢 from ultralytics import YOLO import cv2 model YOLO yolov8n pt
  • datetime.datetime.now() 返回旧值

    我正在通过匹配日期查找 python 中的数据存储条目 我想要的是每天选择 今天 的条目 但由于某种原因 当我将代码上传到 gae 服务器时 它只能工作一天 第二天它仍然返回相同的值 例如当我上传代码并在 07 01 2014 执行它时 它
  • 为什么 PyYAML 花费这么多时间来解析 YAML 文件?

    我正在解析一个大约 6500 行的 YAML 文件 格式如下 foo1 bar1 blah name john age 123 metadata whatever1 whatever whatever2 whatever stuff thi
  • Python beautifulsoup 仅限 1 级文本

    我看过其他 beautifulsoup 得到相同级别类型的问题 看来我的有点不同 这是网站 我正试图拿到右边那张桌子 请注意表的第一行如何展开为该数据的详细细分 我不想要那个数据 我只想要最顶层的数据 您还可以看到其他行也可以展开 但在本例
  • 在Python中检索PostgreSQL数据库的新记录

    在数据库表中 第二列和第三列有数字 将会不断添加新行 每次 每当数据库表中添加新行时 python 都需要不断检查它们 当 sql 表中收到的新行数低于 105 时 python 应打印一条通知消息 警告 数量已降至 105 以下 另一方面
  • Docker 中的 Python 日志记录

    我正在 Ubuntu Web 服务器上的 Docker 容器中测试运行 python 脚本 我正在尝试查找由 Python Logger 模块生成的日志文件 下面是我的Python脚本 import time import logging
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • 从 NumPy ndarray 中选择行

    我只想从 a 中选择某些行NumPy http en wikipedia org wiki NumPy基于第二列中的值的数组 例如 此测试数组的第二列包含从 1 到 10 的整数 gt gt gt test numpy array nump
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • Python ImportError:无法导入名称 __init__.py

    我收到此错误 ImportError cannot import name life table from cdc life tables C Users tony OneDrive Documents Retirement retirem
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • Kivy - 单击按钮时编辑标签

    我希望 Button1 在单击时编辑标签 etykietka 但我不知道如何操作 你有什么想法吗 class Zastepstwa App def build self lista WebOps getList layout BoxLayo

随机推荐

  • 使用 Python 3 将 LF 打印到 Windows 标准输出

    如何获得 n在 Windows 上打印到标准输出 此代码适用于 Python 2 但不适用于 Python 3 set sys stdout to binary mode on Windows import sys os msvcrt ms
  • jQuery:after() 和 insertAfter() 有什么区别

    jQuery 有一个 after 方法 也是一种 insertAfter 方法 他们之间有什么区别 我想我可以用 after 在选定的元素 或多个元素 之后插入元素 是对的吗 什么是 insertAfter for 它们是相互对立的 aft
  • 什么是软可达物体?

    我试图通过这篇 Java 中的软引用 文章来研究软引用的含义 https www baeldung com java soft references https www baeldung com java soft references 我
  • Windows Spark 错误 java.lang.NoClassDefFoundError:无法初始化类 org.apache.spark.storage.StorageUtils

    下载了最新的apache 3 2 0以及hadoop文件 java Java SE Development Kit 17 0 1 也已安装 我什至无法初始化 input import pyspark from pyspark sql imp
  • 移动大数字

    X 712360810625491574981234007851998使用链表表示 每个节点都是一个unsigned int 有没有快速的方法X lt lt 8罢工 gt X lt lt 591除了之外X 2 8罢工 gt X 2 591
  • pandas 到 gbq 声称架构不匹配,而架构完全相同。在 github 上,所有问题都声称已于 2017 年解决

    我试图通过 pandas 将一个表附加到另一个表 从 BigQuery 中提取数据并将其发送到不同的 BigQuery 数据集 虽然表架构完全相同 但我收到错误 请验证结构和 pandas gbq gbq InvalidSchema 请验证
  • 将字符串写入输出流

    我有几个正在实现的输出侦听器OutputStream 它可以是PrintStream写入标准输出或文件 也可以写入内存或任何其他输出目的地 因此 我指定OutputStream作为方法中的 一个 参数 现在 我已经收到了String 在这里
  • 缓冲输入流标记读取限制

    我正在学习如何使用输入流 我试图对 BufferedInputStream 使用标记 但是当我尝试重置时 出现以下异常 java io IOException Resetting to invalid mark 我认为这意味着我的标记读取限
  • Three.js 投影仪和射线对象

    我一直在尝试使用 Projector 和 Ray 类来进行一些碰撞检测演示 我开始尝试使用鼠标来选择对象或拖动它们 我看过使用这些对象的示例 但似乎没有一个注释能够解释 Projector 和 Ray 的某些方法到底在做什么 我有几个问题
  • 插入 USB 驱动器时启动 PowerShell 脚本

    有什么方法可以在 USB 驱动器插入 PC 时立即启动位于 USB 驱动器上的 PowerShell 脚本吗 它必须将所有 PDF 文件从 PC 复制到 USB 驱动器 但这不是问题 我唯一不知道的是如何在插入 USB 驱动器后立即启动脚本
  • Canvas.toDataURL() 解决方法?

    好的 我的一个朋友请我帮助他为他正在开发的移动网站创建一个画布绘画应用程序 然而 他无法将 画作 保存到服务器上 我做了一些检查 发现在当前版本的浏览器 基于 WebKIt IIRC 中 toDataURL 支持被随机丢弃 是否有任何解决方
  • 本地主机与真实IP地址

    本地主机和真实IP地址有什么区别 如果我使用访问应用程序http localhost 8080 index html and http 192 123 456 001 8080 index html 例如192 123 456 001是主机
  • ThreeJS:从屏幕 2D 坐标转换为相机近平面上的世界 3D 坐标? R73

    我在坐标转换方面遇到了一些麻烦 我在屏幕上有一个具有已知坐标 x y 的对象 我想将其转换为世界坐标 x y z 因为它将投影在相机的近平面上 到目前为止 我可以像这样在 Z 平面上进行投影 var vector new THREE Vec
  • 使 proj_api.h 可用于 pip install cartopy

    我正在尝试安装cartopy via pip install cartopy 我已经安装了proj 4它已经在这里放置了必要的文件 Downloads proj 4 9 2 ls l usr local include proj api h
  • 无法将计数标签放置在存在异常值的箱线图须处

    我试图将观察计数的标签放置在箱线图胡须的末端 但当存在异常值时它似乎不起作用 我尝试将最大 最小值与我认为计算出的晶须长度 四分位数 1 或四分位数 3 或 1 5 四分位数范围 进行比较 但标签既不会放置在最大 最小值处 也不会放置在胡须
  • 使用 awk 在文件中查找字符串

    所以我想从文件中抓取一个字符串 文件包含数据 Id Name CreationDate Comment 1 testing 19 10 11 created by jag 2 develop 19 10 12 created by jag
  • (FB Instant games) 我如何获取/设置屏幕分辨率?

    如何在移动 Facebook 应用程序或 Messenger 中获取 设置即时游戏的屏幕分辨率 我尝试通过 window screen width 和 window innerWidth 获得它 它返回了我360像素 但我在Chrome浏览
  • 了解 C++ 中的顺序一致性栅栏

    我正在阅读有关 C 中的内存顺序的内容 我可以很好地理解放松和获取 释放模型 但我正在努力解决顺序一致性问题 如果我没记错的话 从参考参数 https en cppreference com w cpp atomic memory orde
  • 如何使用CAGradientLayer绘制渐变色轮?

    我从这些链接中得到了一些参考 色轮背后的算法是什么 https stackoverflow com questions 4897181 what is the algorithm behind a color wheel 色轮背后的数学 h
  • 将日期字符串解析为带时区的日期时间

    我有一个字符串 r Thu Dec 17 08 56 41 CST 2020 这里CST代表中国中部时间 亚洲 上海 我想将它解析为日期时间 我正在做类似的事情 from dateparser import parse r1 parse r