Python datetime to string bez komponentu mikrosekundy
Dodaję ciągi czasu UTC do odpowiedzi Bitbucket API, które obecnie zawierają tylko Amsterdam (!) struny czasu. Dla spójności z łańcuchami czasu UTC zwracanymi gdzie indziej, pożądanym formatem jest 2011-11-03 11:07:04
(po którym następuje +00:00
, ale to nie jest germańskie).
Jaki jest najlepszy sposób na utworzenie takiego ciągu znaków ( Bez mikrosekundy składowej) z instancji datetime
z mikrosekundy składowej?
>>> import datetime
>>> print unicode(datetime.datetime.now())
2011-11-03 11:13:39.278026
Dodam najlepsze rozwiązanie, które przyszło mi do głowy jako możliwe odpowiedź, ale może być bardziej eleganckie rozwiązanie.
Edit: powinienem wspomnieć, że nie jestem w rzeczywistości drukujący bieżący czas – użyłem datetime.now
, aby podać szybki przykład. Rozwiązanie nie powinno więc zakładać, że jakiekolwiek instancje datetime
, które otrzymuje, będą zawierały komponenty mikrosekundowe.
9 answers
>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 18:21:26'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 18:22:00
>>> import datetime
>>> now = datetime.datetime.now()
>>> print unicode(now.replace(microsecond=0))
2011-11-03 11:19:07
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 18:19:44
Tak to robię. Format ISO:
import datetime
datetime.datetime.now().replace(microsecond=0).isoformat()
# Returns: '2017-01-23T14:58:07'
Możesz zastąpić "T", jeśli nie chcesz formatu ISO:
datetime.datetime.now().replace(microsecond=0).isoformat(' ')
# Returns: '2017-01-23 15:05:27'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-25 19:09:26
W Pythonie 3.6:
from datetime import datetime
datetime.datetime.now().isoformat(' ', 'seconds')
'2017-01-11 14:41:33'
Https://docs.python.org/3.6/library/datetime.html#datetime.datetime.isoformat
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-12 23:42:11
Yet another option:
>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 11:31:28'
Domyślnie używa czasu lokalnego, jeśli potrzebujesz czasu UTC, możesz użyć następującego:
>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
'2011-11-03 18:32:20'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 18:32:40
Zachowaj pierwsze 19 znaków, które chciałeś przez krojenie:
>>> str(datetime.datetime.now())[:19]
'2011-11-03 14:37:50'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-07 21:38:24
Ponieważ nie wszystkie instancje datetime.datetime
mają komponent mikrosekundowy (tzn. gdy jest zero), można podzielić łańcuch na"."i weź tylko pierwszy przedmiot, który zawsze zadziała:
unicode(datetime.datetime.now()).partition('.')[0]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-03 19:35:51
Możemy spróbować czegoś takiego jak poniżej
import datetime
date_generated = datetime.datetime.now()
date_generated.replace(microsecond=0).isoformat(' ').partition('+')[0]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-01 09:34:42
From datetime import datetime
now = datetime.teraz().strftime("%Y - % m - % d_ % H:%M: % S. % f")
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-15 02:49:29