Converteer datetime-object alleen in Python naar een string van datum

Ik zie veel over het converteren van een datumtekenreeks naar een datetime-object in Python, maar ik wil de andere kant op.
Ik heb

datetime.datetime(2012, 2, 23, 0, 0)

en ik wil het graag converteren naar een tekenreeks zoals '2/23/2012'.


Antwoord 1, autoriteit 100%

U kunt strftimegebruiken om u te helpen uw datum op te maken .

Bijvoorbeeld,

import datetime
t = datetime.datetime(2012, 2, 23, 0, 0)
t.strftime('%m/%d/%Y')

zal opleveren:

'02/23/2012'

Meer informatie over opmaak zie hier


Antwoord 2, autoriteit 40%

dateen datetimeobjecten (en ook time) ondersteunen een mini-taal om uitvoer te specificeren, en er zijn twee manieren om toegang te krijgen:

Uw voorbeeld zou er dus als volgt uit kunnen zien:

  • dt.strftime('The date is %b %d, %Y')
  • 'The date is {:%b %d, %Y}'.format(dt)
  • f'The date is {dt:%b %d, %Y}'

In alle drie de gevallen is de uitvoer:

De datum is 23 februari 2012

Voor de volledigheid: je hebt ook direct toegang tot de attributen van het object, maar dan krijg je alleen de cijfers:

'The date is %s/%s/%s' % (dt.month, dt.day, dt.year)
# The date is 02/23/2012

De tijd die nodig is om de minitaal te leren is de moeite waard.


Ter referentie, hier zijn de codes die in de minitaal worden gebruikt:

  • %AWeekdag als afgekorte naam van de landinstelling.
  • %AWeekdag als de volledige naam van de landinstelling.
  • %WWeekdag als decimaal getal, waarbij 0 zondag is en 6 zaterdag.
  • %dDag van de maand als decimaal getal met nul.
  • %BMaand als afgekorte naam van de landinstelling.
  • %BMaand als de volledige naam van de landinstelling.
  • %MMaand als decimaal getal met nul. 01, …, 12
  • %YJaar zonder eeuw als decimaal getal met nul. 00, …, 99
  • %YJaar met eeuw als decimaal getal. 1970, 1988, 2001, 2013
  • %HUur (24-uurs klok) als een decimaal getal met nul. 00, …, 23
  • %IUur (12-uurs klok) als een decimaal getal met nul. 01, …, 12
  • %pHet lokale equivalent van AM of PM.
  • %MMinuut als een decimaal getal met nul. 00, …, 59
  • %STweede als een decimaal getal met nul. 00, …, 59
  • %fMicroseconde als decimaal getal, met nul aan de linkerkant. 000000, …, 999999
  • %ZUTC-offset in de vorm +HHMM of -HHMM (leeg indien naïef), +0000, -0400, +1030
  • %ZTijdzonenaam (leeg indien naïef), UTC, EST, CST
  • %jDag van het jaar als decimaal getal met nul. 001, …, 366
  • %UWeeknummer van het jaar (zondag is de eerste) als een nul opgevuld decimaal getal.
  • %WWeeknummer van het jaar (maandag is eerst) als decimaal getal.
  • %cDe juiste datum- en tijdweergave van de landinstelling.
  • %XDe juiste datumweergave van de landinstelling.
  • %XLocale’s juiste tijdweergave.
  • %%Een letterlijk ‘%’-teken.

Antwoord 3, autoriteit 7%

Een andere optie:

import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> '2016-03-09T08:18:20.860968'

Antwoord 4, autoriteit 2%

U kunt eenvoudige methoden voor het opmaken van tekenreeksen gebruiken:

>>> dt = datetime.datetime(2012, 2, 23, 0, 0)
>>> '{0.month}/{0.day}/{0.year}'.format(dt)
'2/23/2012'
>>> '%s/%s/%s' % (dt.month, dt.day, dt.year)
'2/23/2012'

Antwoord 5, autoriteit 2%

type-specific formattingkan ook worden gebruikt:

t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)

Uitvoer:

'02/23/2012'

Antwoord 6, autoriteit 2%

Als u op zoek bent naar een eenvoudige manier om datetimeom te zetten in stringconversie en het formaat kunt weglaten. U kunt het datetime-object converteren naar stren vervolgens array-slicing gebruiken.

In [1]: from datetime import datetime
In [2]: now = datetime.now()
In [3]: str(now)
Out[3]: '2019-04-26 18:03:50.941332'
In [5]: str(now)[:10]
Out[5]: '2019-04-26'
In [6]: str(now)[:19]
Out[6]: '2019-04-26 18:03:50'

Maar let op het volgende. Als andere oplossingen een AttributeErroropleveren als de variabele Noneis, ontvang je in dit geval een 'None'string.

In [9]: str(None)[:19]
Out[9]: 'None'

Antwoord 7

Als je ook de tijd wilt, ga dan gewoon met

datetime.datetime.now().__str__()

Print 2019-07-11 19:36:31.118766in console voor mij


Antwoord 8

Veruit de meest sexy versie is met opmaakstrings.

from datetime import datetime
print(f'{datetime.today():%Y-%m-%d}')

Antwoord 9

Het is mogelijk om een datetime-object om te zetten in een string door rechtstreeks met de componenten van het datetime-object te werken.

from datetime import date  
myDate = date.today()    
#print(myDate) would output 2017-05-23 because that is today
#reassign the myDate variable to myDate = myDate.month 
#then you could print(myDate.month) and you would get 5 as an integer
dateStr = str(myDate.month)+ "/" + str(myDate.day) + "/" + str(myDate.year)    
# myDate.month is equal to 5 as an integer, i use str() to change it to a 
# string I add(+)the "/" so now I have "5/" then myDate.day is 23 as
# an integer i change it to a string with str() and it is added to the "5/"   
# to get "5/23" and then I add another "/" now we have "5/23/" next is the 
# year which is 2017 as an integer, I use the function str() to change it to 
# a string and add it to the rest of the string.  Now we have "5/23/2017" as 
# a string. The final line prints the string.
print(dateStr)  

Uitvoer –> 23-5-2017


Antwoord 10

Je kunt datetime converteren naar string.

published_at = "{}".format(self.published_at)

Antwoord 11

Aaneenschakeling van tekenreeksen, str.join, kan worden gebruikt om de tekenreeks te bouwen.

d = datetime.now()
'/'.join(str(x) for x in (d.month, d.day, d.year))
'3/7/2016'

Antwoord 12

Je kunt de datetime op deze manier gemakkelijk converteren naar een string:

from datetime import datetime
date_time = datetime(2012, 2, 23, 0, 0)
date = date_time.strftime('%m/%d/%Y')
print("date: %s" % date)

Dit zijn enkele van de patronen die u kunt gebruiken om datetime naar string te converteren:

datetime to string patterns

Voor een beter begrip kun je dit artikel bekijken op hoe strings naar datetime en datetime naar string in Python te converterenof de officiële strftimedocumentatie


Antwoord 13

end_date = “202-04-18 16:00:00”

end_date_string = end_date.strftime(“%Y-%m-%d”)

print(end_date_string)

Other episodes