Krijg de datum van vandaag in YYYY-MM-DD in Python?

Ik gebruik:

str(datetime.datetime.today()).split()[0]

Om de datum van vandaag in de datum van vandaag in de YYYY-MM-DD-indeling te retourneren.

Is er een minder ruw manier om dit te bereiken?


Antwoord 1, Autoriteit 100%

u kunt strftime :

gebruiken

>>> from datetime import datetime
>>> datetime.today().strftime('%Y-%m-%d')
'2021-01-26'

Bovendien, voor iedereen die ook op zoek is naar een nul-gevoerd uur, minuut en tweede aan het einde: (commentaar door Gabriel Staples )

>>> datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
'2021-01-26-16:50:03'

Antwoord 2, Autoriteit 17%

U kunt datetime.date.today()en converteer de resulterende datetime.dateobject naar een string:

from datetime import date
today = str(date.today())
print(today)   # '2017-12-26'

Antwoord 3, Autoriteit 5%

Ik gebruik altijd de isoformat()methode hiervoor.

from datetime import date    
today = date.today().isoformat()
print(today)  # '2018-12-05'

Merk op dat dit ook werkt op datetimeobjectenals je de tijd ook nodig hebt in de standaard ISO 8601-indeling.

from datetime import datetime
now = datetime.today().isoformat()
print(now)  # '2018-12-05T11:15:55.126382'

Antwoord 4, autoriteit 5%

Datetime is gewoon heerlijk als je graag grappige codes onthoudt. Zou je niet de voorkeur geven aan eenvoud?

>>> import arrow
>>> arrow.now().format('YYYY-MM-DD')
'2017-02-17'

Deze module is slim genoeg om te begrijpen wat je bedoelt.

Doe gewoon pip install arrow.

Addendum: In antwoord op degenen die zich druk maken over dit antwoord, wil ik zeggen dat de pijl een van de alternatievebenaderingen is voor het omgaan met datums in Python. Dat is vooral wat ik bedoelde te suggereren.


Antwoord 5, autoriteit 2%

Heel laat antwoord, maar je kunt gewoon gebruiken:

import time
today = time.strftime("%Y-%m-%d")
# 2021-05-02

Antwoord 6, autoriteit 2%

Werkt u met Panda’s?

U kunt pd.to_datetimeuit de pandas-bibliotheek. Hier zijn verschillende opties, afhankelijk van wat u wilt retourneren.

import pandas as pd
pd.to_datetime('today')  # pd.to_datetime('now')
# Timestamp('2019-03-27 00:00:10.958567')

Als python datetime object,

pd.to_datetime('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 50, 42, 587629)

Als een geformatteerde datumtekenreeks,

pd.to_datetime('today').isoformat()
# '2019-04-18T04:03:32.493337'
# Or, `strftime` for custom formats.
pd.to_datetime('today').strftime('%Y-%m-%d')
# '2019-03-27'

Als u alleen de datum te krijgen van de timestamp, call Timestamp.date.

pd.to_datetime('today').date()
# datetime.date(2019, 3, 27)

Afgezien van to_datetime, kunt u rechtstreeks een instantie een Timestampobject gebruikmaking

pd.Timestamp('today')  # pd.Timestamp('now')
# Timestamp('2019-04-18 03:43:33.233093')
pd.Timestamp('today').to_pydatetime()
# datetime.datetime(2019, 4, 18, 3, 53, 46, 220068)

Als u wilt uw tijdstempel tijdzone bewust te maken, slagen voor een tijdzone naar de tzargument.

pd.Timestamp('now', tz='America/Los_Angeles')
# Timestamp('2019-04-18 03:59:02.647819-0700', tz='America/Los_Angeles')

Nog een andere datum parser bibliotheek: Pendulum

Deze is goed, ik beloof het.

Als je met pendulumwerkt, zijn er enkele interessante keuzes. Je kunt de huidige tijdstempel krijgen met now()of de datum van vandaag met today().

import pendulum 
pendulum.now()
# DateTime(2019, 3, 27, 0, 2, 41, 452264, tzinfo=Timezone('America/Los_Angeles'))
pendulum.today()
# DateTime(2019, 3, 27, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

Bovendien kunt u ook de datum van tomorrow()of yesterday()rechtstreeks krijgen zonder dat u extra tijddelta-berekeningen hoeft uit te voeren.

pendulum.yesterday()
# DateTime(2019, 3, 26, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))
pendulum.tomorrow()
# DateTime(2019, 3, 28, 0, 0, 0, tzinfo=Timezone('America/Los_Angeles'))

Er zijn verschillende opmaakopties beschikbaar.

pendulum.now().to_date_string()
# '2019-03-27'
pendulum.now().to_formatted_date_string()
# 'Mar 27, 2019'
pendulum.now().to_day_datetime_string()
# 'Wed, Mar 27, 2019 12:04 AM'

Rationale voor dit antwoord

Veel panda-gebruikers stuiten op deze vraag omdat ze denken dat het meer een python-vraag is dan een panda-vraag. Dit antwoord is bedoeld om nuttig te zijn voor mensen die deze bibliotheken al gebruiken en die graag willen weten of er manieren zijn om deze resultaten te bereiken binnen het bereik van de bibliotheek zelf.

Als je nog niet met panda’s of slinger werkt, raad ik je zeker niet aan om ze te installeren alleen maar om deze code uit te voeren! Deze bibliotheken zijn zwaar en hebben veel sanitair onder de motorkap. Het is de moeite niet waard als u in plaats daarvan de standaardbibliotheek kunt gebruiken.


Antwoord 7

U kunt gebruiken,

>>> from datetime import date
>>> date.today().__str__()
'2019-10-05'

Antwoord 8

from datetime import datetime
date = datetime.today().date()
print(date)

Antwoord 9

mijn code is een beetje ingewikkeld, maar ik gebruik hem veel

strftime("%y_%m_%d", localtime(time.time()))

referentie:’https://strftime.org/

je kunt naar de referentie kijken om alles te maken wat je maar wilt
voor jou wat JJJJ-MM-DD verander gewoon mijn code in:

strftime("%Y-%m-%d", localtime(time.time()))

Antwoord 10

Dit werkt:

from datetime import date
today =date.today()

Uitvoer in deze tijd: 29-08-2020

Aanvullend:

this_year = date.today().year
this_month = date.today().month
this_day = date.today().day
print(today)
print(this_year)
print(this_month)
print(this_day)

Antwoord 11

Om het dagnummer van de datum te krijgen is in python

bijvoorbeeld:19-12-2020(dd-mm-jjj)order_date
we hebben 19 nodig als uitvoer

order['day'] = order['Order_Date'].apply(lambda x: x.day)

Antwoord 12

Ik geef de voorkeur aan dit, want dit is eenvoudig, maar misschien op de een of andere manier inefficiënt en buggy. U moet de EXIT-code van Shell-opdracht controleren als u een foutvrij programma wilt .

os.system('date +%Y-%m-%d')

Other episodes