意外的日期时间行为
Unexpected datetime behavior
我有一个 Django 项目,我在 models.py 中使用了这样的 strftime 函数:
class Email(models.Model):
user = models.ForeignKey("User", on_delete=models.CASCADE, related_name="emails")
sender = models.ForeignKey("User", on_delete=models.PROTECT, related_name="emails_sent")
recipients = models.ManyToManyField("User", related_name="emails_received")
subject = models.CharField(max_length=255)
body = models.TextField(blank=True)
timestamp = models.DateTimeField(auto_now_add=True)
read = models.BooleanField(default=False)
archived = models.BooleanField(default=False)
def serialize(self):
return {
"id": self.id,
"sender": self.sender.email,
"recipients": [user.email for user in self.recipients.all()],
"subject": self.subject,
"body": self.body,
"timestamp": self.timestamp.strftime("%b %-d %Y, %-I:%M %p"),
"read": self.read,
"archived": self.archived
}
但是,由于某些原因,这个 returns 一个 ValueError,即使根据文档 (https://www.programiz.com/python-programming/datetime/strftime) 这是一个有效的格式字符串。一旦我删除了所有破折号,它就可以正常工作。为什么这不起作用?我需要导入模块还是什么?谢谢
对于@jsonharper 的评论,这里有一个 link 给官方 Python 3 文档:https://docs.python.org/3.0/library/datetime.html#strftime-behavior 正如他指出的那样,网站注释平台变化很常见,并且没有列出“ -" 作为 commonly-accepted 格式说明符。
我有一个 Django 项目,我在 models.py 中使用了这样的 strftime 函数:
class Email(models.Model):
user = models.ForeignKey("User", on_delete=models.CASCADE, related_name="emails")
sender = models.ForeignKey("User", on_delete=models.PROTECT, related_name="emails_sent")
recipients = models.ManyToManyField("User", related_name="emails_received")
subject = models.CharField(max_length=255)
body = models.TextField(blank=True)
timestamp = models.DateTimeField(auto_now_add=True)
read = models.BooleanField(default=False)
archived = models.BooleanField(default=False)
def serialize(self):
return {
"id": self.id,
"sender": self.sender.email,
"recipients": [user.email for user in self.recipients.all()],
"subject": self.subject,
"body": self.body,
"timestamp": self.timestamp.strftime("%b %-d %Y, %-I:%M %p"),
"read": self.read,
"archived": self.archived
}
但是,由于某些原因,这个 returns 一个 ValueError,即使根据文档 (https://www.programiz.com/python-programming/datetime/strftime) 这是一个有效的格式字符串。一旦我删除了所有破折号,它就可以正常工作。为什么这不起作用?我需要导入模块还是什么?谢谢
对于@jsonharper 的评论,这里有一个 link 给官方 Python 3 文档:https://docs.python.org/3.0/library/datetime.html#strftime-behavior 正如他指出的那样,网站注释平台变化很常见,并且没有列出“ -" 作为 commonly-accepted 格式说明符。