Python datetime naar string zonder microseconde component

Ik voeg UTC-tijdreeksen toe aan Bitbucket API-antwoorden die momenteel alleen Amsterdamse (!) tijdreeksen bevatten. Voor consistentie met de UTC-tijdreeksen die elders worden geretourneerd, is het gewenste formaat 2011-11-03 11:07:04(gevolgd door +00:00, maar dat is niet relevant ).

Wat is de beste manier om zo’n string te maken (zondereen microseconde component) van een datetimeinstantie meteen microseconde component?

>>> import datetime
>>> print unicode(datetime.datetime.now())
2011-11-03 11:13:39.278026

Ik zal de beste optie die bij me opkwam als mogelijk antwoord toevoegen, maar er is misschien een elegantere oplossing.

Bewerken:ik moet vermelden dat ik eigenlijkniet de huidige tijd afdruk – ik heb datetime.nowgebruikt om een snel voorbeeld te geven . De oplossing mag er dus niet vanuit gaan dat alle datetime-instanties die het ontvangt microsecondecomponenten bevatten.


Antwoord 1, autoriteit 100%

Als u een datetime-object wilt opmaken in een specifieke indeling die afwijkt van de standaardindeling, kunt u die indeling het beste expliciet specificeren:

>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 18:21:26'

Bekijk de documentatie van datetime.strftime()voor een uitleg van de %richtlijnen.


Antwoord 2, autoriteit 20%

>>> import datetime
>>> now = datetime.datetime.now()
>>> print unicode(now.replace(microsecond=0))
2011-11-03 11:19:07

Antwoord 3, autoriteit 11%

In Python 3.6:

from datetime import datetime
datetime.now().isoformat(' ', 'seconds')
'2017-01-11 14:41:33'

https://docs.python.org/3.6/ library/datetime.html#datetime.datetime.isoformat


Antwoord 4, autoriteit 5%

Dit is de manier waarop ik het doe. ISO-formaat:

import datetime
datetime.datetime.now().replace(microsecond=0).isoformat()
# Returns: '2017-01-23T14:58:07'

Je kunt de ‘T’ vervangen als je geen ISO-formaat wilt:

datetime.datetime.now().replace(microsecond=0).isoformat(' ')
# Returns: '2017-01-23 15:05:27'

Antwoord 5, autoriteit 2%

Nog een andere optie:

>>> import time
>>> time.strftime("%Y-%m-%d %H:%M:%S")
'2011-11-03 11:31:28'

Standaard gebruikt dit de lokale tijd, als u UTC nodig heeft, kunt u het volgende gebruiken:

>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime())
'2011-11-03 18:32:20'

Antwoord 6, autoriteit 2%

Behoud de eerste 19 tekens die je wilde via slicen:

>>> str(datetime.datetime.now())[:19]
'2011-11-03 14:37:50'

Antwoord 7

Ik doe meestal:

import datetime
now = datetime.datetime.now()
now = now.replace(microsecond=0)  # To print now without microsecond.
# To print now:
print(now)

Uitgang:

2019-01-13 14:40:28

Antwoord 8

Sinds niet alle datetime.datetimeinstanties hebben een microseconde component (d.w.z. wanneer het nul is), kunt u de tekenreeks scheiden op een “.” en neem alleen het eerste item, dat altijd werkt:

unicode(datetime.datetime.now()).partition('.')[0]

Antwoord 9

Vanaf Python 3.6+, de beste manier om dit te doen is door de nieuwe timespecARGUMENT VOOR isoformat.

isoformat(timespec='seconds', sep=' ')

Gebruik:

>>> datetime.now().isoformat(timespec='seconds')
'2020-10-16T18:38:21'
>>> datetime.now().isoformat(timespec='seconds', sep=' ')
'2020-10-16 18:38:35'

Antwoord 10

We kunnen iets zo proberen

import datetime
date_generated = datetime.datetime.now()
date_generated.replace(microsecond=0).isoformat(' ').partition('+')[0]

Antwoord 11

DIT IK GEBRUIK IK OMDAT IK HET KAN BINNEN HERINNEREN DERWIJL HET BETER (EN DATUM TIME-formaat kan ook worden aangepast op basis van uw keuze): –

import datetime
moment = datetime.datetime.now()
print("{}/{}/{} {}:{}:{}".format(moment.day, moment.month, moment.year,
                                 moment.hour, moment.minute, moment.second))

Antwoord 12

Ik vond dit de eenvoudigste manier.

>>> t = datetime.datetime.now()
>>> t
datetime.datetime(2018, 11, 30, 17, 21, 26, 606191)
>>> t = str(t).split('.')
>>> t
['2018-11-30 17:21:26', '606191']
>>> t = t[0]
>>> t
'2018-11-30 17:21:26'
>>> 

Antwoord 13

>>> from datetime import datetime
>>> dt = datetime.now().strftime("%Y-%m-%d %X")
>>> print(dt)
'2021-02-05 04:10:24'

Other episodes