Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法将当前时间转换为以Z结尾的特定日期格式_Python_Python 3.x_Date_Datetime - Fatal编程技术网

Python 无法将当前时间转换为以Z结尾的特定日期格式

Python 无法将当前时间转换为以Z结尾的特定日期格式,python,python-3.x,date,datetime,Python,Python 3.x,Date,Datetime,我正在尝试将当前时间转换为特定的格式,但我做不到。这就是我试图制作的2021-05-02T18:00:00.000Z。但是,以下脚本生成的是2021-05-04T00:21:25.199218 import datetime date_ = datetime.datetime.now().isoformat() print(date_) 如何实现这种格式 Datetime天真地不知道时区。但是打印出来的时间包括时区信息“Z”。因此,您需要一个特定的时区:dt=datetime.datetim

我正在尝试将当前时间转换为特定的格式,但我做不到。这就是我试图制作的
2021-05-02T18:00:00.000Z
。但是,以下脚本生成的是
2021-05-04T00:21:25.199218

import datetime

date_ = datetime.datetime.now().isoformat()
print(date_)
如何实现这种格式

  • Datetime天真地不知道时区。但是打印出来的时间包括时区信息“Z”。因此,您需要一个特定的时区:
    dt=datetime.datetime.now(datetime.timezone.utc)
  • Python使用任何时间微秒的分辨率<代码>日期时间。默认情况下,isoformat将使用任何可用的分辨率。但是,您只对毫秒感兴趣,因此必须明确指定:
    iso\u ts=dt.isoformat(timespec=“millides”)
  • 不幸的是,isoformat将始终使用UTC偏移量作为后缀。如果确实需要“Z”来表示偏移量+00:00,则需要手动更改:
    iso_ts.replace(“+00:00”,“Z”)
    。虽然替换在这里看起来很危险,但请记住“Z”始终表示+00:00偏移量。理论上-00:00也是可能的(不确定确切的规范),但python永远不会生成它。如果你有其他偏移量,那么它不可能是Z

  • 这将为您提供
    datetime.datetime.now(datetime.timezone.utc).isoformat(timespec=“毫秒”)。替换(“+00:00”,“Z”)

    好的,它似乎正在工作。如果要转换的日期是1980-01-22怎么办?我不知道你的意思。这应该适用于任何日期,只要你能用时区信息创建一个
    datetime
    对象,我不确定你能用datetime做到这一点。尝试使用pytz。它包括祖鲁时区。请对此发表评论。不,你不需要pytz在这里。遗憾的是,我还不能发表评论。我想你确实需要皮茨。有更好的答案吗?您很快就会获得所需的声誉积分;-)有希望地。字符串替换。我也想到了。如果不是+00:00怎么办?像这样,2021-05-04T00:21:25.199218?