[英]Timezone aware objects in Django - why is datetime.time not timezone aware?
[英]Django mock timezone aware datetime on creating model
我有一個測試,可以在其中創建一些對象:
def test_get_courier_task_returns_couriers_tasks(self):
with patch('django.utils.timezone.now', return_value=make_aware(datetime(2018, 1, 24, 11, 57))):
task1 = TaskFactory()
response = json.loads(MyAPI.get_tasks_list(self.user.username))
print('[*] Response timestamp: {}'.format(response['content'][0]['timestamp']))
該Task
具有created_timestamp
與現場auto_add_now
設置為TRUE和to_json()
方法,該方法是在使用get_tasks_list()
以上:
class Task(models.Model):
created_timestamp = models.DateTimeField(auto_now_add=True)
def to_json(self):
to_return = {
'timestamp': self.created_timestamp.strftime('%d-%m-%Y %H:%M')
}
return to_return
不幸的是,測試給出了以下輸出:
[*]響應時間戳:24-01-2018 10:57
我已經檢查過這是時區感知的,但不是給我UTC + 1,而是保存時給UTC + 0。 我需要做什么? 我的設置中有USE_TZ = True
,並且已經應用了遷移。 這個問題對我的問題沒有幫助。
事實證明,給時區明確表示有助於:
with patch('django.utils.timezone.now', return_value=datetime(2018, 1, 24, 11, tzinfo=pytz.timezone('utc'))):
嘗試為make_aware
提供make_aware
的時區。
同樣在測試中檢查特定時間有點循環,可能不需要檢查它,只需確保它運行並產生時間戳即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.