im, используя следующее, которое отлично работает для преобразования строки UTC в дату, за исключением случаев, когда миллисекунды ДОЛЖНЫ, чем 6 цифр. чем он дует. Urgh * &^* &python strptime от строки UTC до datetime regex re.sub
format = '%Y-%m-%dT%H:%M:%S'
if '.' in value:
format = format + '.%f'
if value.endswith('Z'):
format = format + 'Z'
return datetime.strptime(value, format)
здесь является StackTrace
File "/usr/lib64/python2.6/_strptime.py", line 325, in _strptime
(data_string, format))
ValueError: time data '2013-07-19T13:02:53.8241899Z' does not match format '%Y-%m-%dT%H:%M:%S.%fZ'
Что метод, чтобы ограничить миллисекунды до 6 цифр в длину. ive используется с использованием '{:%Y-%m-%dT%H:%M:%S.6%f}'.format( datetime)
, но это помогает исключить десятичные знаки (если они есть) в соответствии с символом «.'character в предоставленной строке». но я не очень хорошо разбираюсь в регулярном выражении.
im использование python 2.6. * На машине.
ли вам действительно нужно имеют 6 цифр милисекунд? : O – aIKid
Этот фрагмент примера может быть лучше, если сам код содержит значения для 'sz' и' value'. –
для создания правильной строки, вы можете использовать 'datetime.utcnow(). Isoformat() + 'Z''. Похоже, что ['rfc3339'] (http://tools.ietf.org/search/rfc3339#section-5.6) не ограничивает число цифр после десятичной точки. Поэтому, если строка ввода заканчивается на 'Z', тогда это действительная дата rfc3339 в вашем случае. – jfs