2015-01-28 1 views
1

Мне нужна строка даты в ISO 8601 без каких-либо микросекунд.DateTime в ISO 8601 + TimeZone и без микросекунд

Как:

2015-01-05T11:26:00-03:00 

Я использую:

from pytz import timezone 
from datetime import datetime 
timezone(settings.TIME_ZONE).localize(datetime.now()).isoformat() 

Но он возвращает:

'2015-01-28T17:49:39.711725-03:00' 

Как исправить это?

+1

Чтобы получить текущее локализованное время, используйте 'datetime.now (часовой пояс (settings.TIME_ZONE))'. Не используйте '.localize (naive_local_time)' - местное время может быть неоднозначным, например, во время перехода на конец DST. 'now (timezone (settings.TIME_ZONE))' всегда работает, потому что он использует 'fromutc()' внутри, а '.localize()' может возвращать неверный результат для неоднозначного или несуществующего локального времени. – jfs

ответ

7

Установите microsecond в 0:

t = timezone(settings.TIME_ZONE).localize(datetime.now()).replace(microsecond=0) 
t.isoformat() 

datetime.datetime.replace(...) возвращает новый объект datetime с указанным атрибутом изменен.