首页 > 解决方案 > 在python中将字符串转换为时区iso格式

问题描述

我正在尝试将此表单的字符串转换"2019-07-17T16:00:50.282203+01:30"为时区格式,以便我可以更新models.DateTimeField字段。

模型.py:

from django.utils import timezone

class task(models.Model):
       title = models.CharField(max_length=100)
       create_date = models.DateTimeField(default=timezone.now)
       .
       .
       .

请求将是这样的:

{
    "title": "editeddd task",
    "create_date" : "2019-07-17T16:00:50.282203+01:30"

}

被困在转换UTC部分。

视图.py:

.
.
.
create_date = datetime.strptime(self.request.data['expiration_date'], '%Y-%m-%dT%H:%M:%S.%f%z')
.
.

‍‍错误是%z部分的。它可以转换"2019-07-17T16:00:50.282203+0130"但不能转换"2019-07-17T16:00:50.282203+01:30"(注意:在 UTC 部分)

标签: pythontype-conversiontimezone

解决方案


在发送时要严格,在接收时要宽容,您应该在将 create_date 字符串传递给strptime.

我的建议是使用正则表达式,或者查看rreplace - 如何替换字符串中最后一次出现的表达式?摆脱那个最后:

希望这可以帮助!


推荐阅读