Я написал метод преобразования строки даты в дату в python. Когда я получаю дату из внешнего метода, точность миллисекунды теряется, тогда как когда я выполняю литье внутри метода, точность сохраняется. Может ли кто-нибудь сообщить мне, в чем проблема? Большое спасибо!Python if block выполняется, если выражение условия оценивается до -1
from datetime import datetime
from pytz import timezone
def getUTCTimeFromString(date_string):
#allow time with Z in it
if date_string:
if date_string.find('Z'):
date_string = date_string[:len(date_string)-1]
return datetime.strptime(date_string,"%Y-%m-%dT%H:%M:%S.%f").replace(tzinfo=timezone('UTC'))
return None
def getStringFromDate(dateObject):
return dateObject.strftime('%Y-%m-%d %H:%M:%S.%f')
#Method being tested
# Input 2012-02-27T05:32:10.607Z
def getEasternTimeFromString(date_string):
if date_string:
if date_string.find('Z'):
date_string = date_string[:len(date_string)-1]
local_date = datetime.strptime(date_string,"%Y-%m-%dT%H:%M:%S.%f").replace(tzinfo=timezone('UTC'))
utc_date = getUTCTimeFromString(date_string)
print 'utc date from external method --> '+getStringFromDate(utc_date)
print 'utc date calculated locally -->' +getStringFromDate(local_date)
return utc_date.astimezone(timezone('US/Eastern'))
return None
Высокий. Благодаря! Я довольно новичок в python. Не понимал, что это сломается. Btw, я использовал 'date_string.count ('Z')' вместо find 'date_string.find ('Z')', который отлично работает в моем случае. – Jay
@Jay: Еще лучше будет 'date_string.endswith ('Z')', который проверяет наличие * и * местоположения в конце строки. Кроме того, 'date_string = date_string [: - 1]' достаточно для усечения последнего символа. –
Предложения приняты и реализованы. Спасибо, Грег! – Jay