파이썬에서 YYYY-MM-DD로 오늘 날짜를 얻으시겠습니까?


326

나는 사용하고있다 :

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

오늘 날짜를 YYYY-MM-DD형식 으로 반환 합니다.

이것을 달성하는 덜 조잡한 방법이 있습니까?


3
"원유"란 무엇을 의미합니까?
Gombat

4
어쩌면? \ n now = datetime.datetime.now () \ n str (now.strftime ( "Y- % m- % d")
Gombat

3
@Gombat 내 경험에 의미하는 바는 일반적으로 분할, 색인, 연결, 연결 등을하지 않고도 파이썬에서 원하는 것을 얻는 방법이 내장되어있다.
Pyderman

답변:


603

strftime 을 사용할 수 있습니다 :

from datetime import datetime

datetime.today().strftime('%Y-%m-%d')

또한 마지막에 0, 시간, 분 및 초를 찾는 사람은 ( Gabriel Staples의 의견 )

datetime.today().strftime('%Y-%m-%d-%H:%M:%S')

거기에 "%는 X"일 것이라고 강한 가능성도있다 ...하지만 그 종속 로케일
Joran 비즐리

19
마지막에 0, 시간, 분, 초를 찾는 사람이라면 :datetime.datetime.today().strftime('%Y-%m-%d-%H:%M:%S')
Gabriel Staples

어떻게 막 time.strftime("%Y-%m-%d")?
aderchox

UTC 날짜 :datetime.utcnow().strftime('%Y-%m-%d')
Agost 볼펜

가치가 있음을 주목할 가치가 date있습니다datetime
dummyDev

116

datetime.date.today()결과 datetime.date객체를 사용하여 문자열 로 변환 할 수 있습니다 .

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

구분 기호를 /? 로 변경할 수 있습니까?
Stevoisiak

3
@StevenVascellaro 것입니다date.today().strftime('%Y/%m/%d')
kmonsoor

2
@StevenVascellaro 나쁜 생각입니다. 독자는 일반적으로 세퍼레이터 가정 .'DMY', 세퍼레이터로 /하는 M/D/Y세퍼레이터 -로이 Y-M-D. 모든 사람이이 지침을 따르지는 않지만 모든 사람이로 전환하지 않는 한 국제적으로 날짜를 읽는 데 도움이됩니다 Y-M-D.
glglgl

1
@ glglgl 저는 미국 날짜 형식 m / d / y를 가정하는 API로 작업하고 있습니다. 이미 신청서에서 주문을 변경했습니다.
Stevoisiak

1
예 @glglgl 내가 사용 m / D / Y
Stevoisiak

35

재미있는 코드를 기억하고 싶다면 Datetime이 정말 좋습니다. 단순성을 선호하지 않습니까?

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

이 모듈은 당신이 의미 하는 바를 이해하기에 충분히 영리합니다 .

그냥하세요 pip install arrow.

부록 :이 답변을 연습 한 사람들에게 화살표는 파이썬에서 날짜를 다루는 다른 방법 중 하나를 나타냅니다 . 그것이 주로 제가 제안하고자하는 것입니다.


17
이와 같은 간단한 작업을 위해 내장 라이브러리에서 간단하게 다른 라이브러리를 사용할 수있는 이유는 무엇입니까? 물론, 사용자가 다른 많은 {시간, 날짜} 관련 기능을 필요로하는 경우 새 라이브러리를 가져 오는 것이 좋습니다.
kmonsoor

2
두 번째 코드 줄을 읽는 것에 대해 웃게 만들었습니다. print(date.today())>> "2018-12-16" 보다 더 나은 가요? lol int 값을 쉽게 얻을 수 있습니다 t.year,t.month,t.day+1>> (2018, 12, 17) t = date.today()사람들이 시간을 알리기 위해 녹색 화살표를 호출 할 필요가 없습니다. 오, 이것이 기억하기에는 너무 많은 코드입니다 ...
Puddle

1
@ 퍼들 : 재미 있음.
Bill Bell

@kmonsoor 어떻게 import datetime다른 import arrow? 물론 내장되어 있지만 arrow더 편리한 형식을 제공 한다면 왜 사용하지 않습니까?
information_interchange

1
@information_interchange 이미 질문에 답변했습니다. 내장 vs. 누군가 그 여분의 물건이 필요하다면, 왜 안 arrow됩니까? 그러나 많은 간단한 프로젝트의 경우에는 불필요합니다. 또한 많은 회사 내부 프로젝트에서 ppl은 새 라이브러리 포함에 대한 승인을 받아야합니다.
kmonsoor

30

나는 항상 isoformat()이것을 위해 기능을 사용합니다 .

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

표준 형식의 시간이 필요한 경우 datetime 객체에서도 작동합니다.

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

15

다른 답변은 python 's 사용을 제안 datetime.datetime하지만 @Bill Bell이 말했듯 datetime이 서비스 또는 더 큰 API 생태계의 일부로 더 간단한 인터페이스 를 제공하는 다른 라이브러리가 있습니다 . 다음은 datetimes매우 간단 하게 작업 할 수있는 두 개의 라이브러리입니다 .

판다

팬더 라이브러리 pd.to_datetime에서 사용할 수 있습니다 . 반환하려는 항목에 따라 다양한 옵션이 있습니다.

import pandas as pd

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

파이썬 datetime 객체로서

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

형식이 지정된 날짜 문자열로

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'

타임 스탬프에서 날짜 만 얻으려면을 호출하십시오 Timestamp.date.

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

이외에도 다음을 사용하여 객체를 to_datetime직접 인스턴스화 할 수 있습니다 Timestamp.

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)

타임 스탬프 시간대를 인식 시키려면 시간대를 tz인수에 전달하십시오.

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

흔들리는 추

진자 작업을하는 경우 흥미로운 선택이 있습니다. 을 사용하여 now()또는 오늘 날짜를 사용 하여 현재 타임 스탬프를 얻을 수 있습니다 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'))

또한 추가 타임 델타 산술을 수행하지 않고도 tomorrow()또는 yesterday()날짜를 직접 얻을 수도 있습니다 .

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'))

사용 가능한 다양한 형식화 옵션이 있습니다.

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'

3
좋은 소식 팬더도 있습니다!
ZygD

1
이것은 판다에서 일할 때 특히 굉장합니다
loveR

pd.to_datetime (day) .date ()는 팬더를 사용하고 str로 변환하지 않으려는 경우에 유용합니다. 감사!
Brndn

4

매우 늦은 답변이지만 다음을 사용할 수 있습니다.

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

1
고마워요, 이것은 가장 깨끗한 것입니다.
Barbaros Özhan


-5

나는 이것이 간단하지만 어쨌든 비효율적이며 버그가 있기 때문에 이것을 선호합니다. 강력한 오류 방지 프로그램 을 원한다면 shell 명령의 종료 코드를 확인해야합니다 .

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

4
실제로 날짜를 형식화하지 않고 시스템 날짜 명령이 리턴 할 내용을 확인하기위한 목적으로 만 사용해야합니다. 종료 코드 검사와는 별개로 여러 가지 이유가 있습니다. 1. 휴대용이 아닙니다. Windows의 date 명령 은 날짜 2를 설정 합니다. 비효율적입니다. 그것은 전체 셸을 생성해야하며, 구문 분석, 찾기 및 실행, 출력 반환 및 해당 셸 3을 파괴해야합니다. 그것은 단순히 파이썬이 아닙니다. 코드를 보는 언어로 이민자를 오도 할 수도 있습니다
Captain Lepton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.