程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何在 python 中将日期时间格式化为字符串“yyyy-MM-dd'T'HH:mm:ss.SSSZ'”格式

发布于2023-11-18 10:23     阅读(11078)     评论(0)     点赞(13)     收藏(4)


我想获得 datetime.now 但像这样的格式“2023-11-13T02:12:01.480Z”我尝试使用

 now = now.strftime("%Y-%m-%dT%H:%M:%S.%Z")
 

但得到:

2023-11-15T08:27:34.

如何在 python 中将日期时间格式化为字符串“yyyy-MM-dd'T'HH:mm:ss.SSSZ'”格式有什么想法吗?


解决方案


TL;DR 使用

from datetime import datetime, timezone

datetime.now(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T07:18:11.226Z'

注意您需要指定 UTC 作为 tz 参数才能实际获取UTC 日期时间而不是本地时间datetime.now


知道日期时间对象作为输入

from zoneinfo import ZoneInfo
now = datetime.now(ZoneInfo("Europe/Berlin")) # UTC+1 in Nov 2023
now
# datetime.datetime(2023, 11, 15, 11, 57, 27, 899158, tzinfo=zoneinfo.ZoneInfo(key='Europe/Berlin'))

now.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T10:57:27.899Z' 

简单的日期时间作为输入

now = datetime.now() # local time !
now
# datetime.datetime(2023, 11, 15, 11, 59, 52, 263956)

# NOTE input stays local time, no Z added:
now.isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T11:59:52.263'

# NOTE input *assumed* to be local time, then converted to UTC,
#      therefore the Z is added:
now.astimezone(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
# '2023-11-15T10:59:52.263Z'


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/2039596/c61baaac4fef18b2fda8/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

13 0
收藏该文
已收藏

评论内容:(最多支持255个字符)