내일 날짜를 알 수 있는 가장 깨끗하고 가장 파이썬적인 방법?
내일 날짜를 알 수 있는 가장 깨끗하고 파이썬적인 방법은 무엇입니까?하루에 하나를 추가하거나 월말에 일을 처리하는 것보다 더 나은 방법이 있을 것입니다.
datetime.date.today() + datetime.timedelta(days=1)
방법을 강구해야 합니다.
timedelta
일, 초, 마이크로초, 밀리초, 분, 시간 또는 주를 추가할 수 있습니다.
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2009, 10, 1)
>>> today + datetime.timedelta(days=1)
datetime.date(2009, 10, 2)
>>> datetime.date(2009,10,31) + datetime.timedelta(hours=24)
datetime.date(2009, 11, 1)
논평에서 질문한 바와 같이 윤일은 문제가 되지 않습니다.
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=1)
datetime.date(2004, 2, 29)
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=2)
datetime.date(2004, 3, 1)
>>> datetime.date(2005, 2, 28) + datetime.timedelta(days=1)
datetime.date(2005, 3, 1)
윤초를 처리할 수 없습니다. 다음을 수행합니다.
>>> from datetime import datetime, timedelta
>>> dt = datetime(2008,12,31,23,59,59)
>>> str(dt)
'2008-12-31 23:59:59'
>>> # leap second was added at the end of 2008,
>>> # adding one second should create a datetime
>>> # of '2008-12-31 23:59:60'
>>> str(dt+timedelta(0,1))
'2009-01-01 00:00:00'
>>> str(dt+timedelta(0,2))
'2009-01-01 00:00:01'
빌어먹을
편집 - @표시:문서에는 "예"라고 표시되지만 코드에는 "별로"라고 표시됩니다.
>>> time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")
(2008, 12, 31, 23, 59, 60, 2, 366, -1)
>>> time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
1230789600.0
>>> time.gmtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 6, 0, 0, 3, 1, 0)
>>> time.localtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 0, 0, 0, 3, 1, 0)
나는 gmtime 또는 local time이 mktime으로 반환된 값을 가져가서 원래 튜플을 60초로 돌려줄 것이라고 생각합니다.그리고 이 실험은 이 윤초들이 그냥 사라질 수 있다는 것을 보여줍니다.
>>> a = time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
>>> b = time.mktime(time.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S"))
>>> a,b
(1230789600.0, 1230789600.0)
>>> b-a
0.0
인 것도.time
모듈은 다음을 처리할 수 있습니다.
import time
time.localtime(time.time() + 24*3600)
서버를 처리하는 사용자의 경우 타임스탬프
어제 타임스탬프 가져오기
yesterdaytimestamp = datetime.datetime.today() + datetime.timedelta(days=-1)
오늘의 타임 스탬프를 받으려면:
currenttimestamp = datetime.datetime.now().timestamp()
Tomorrow 타임스탬프 얻기
tomorrowtimestamp = datetime.datetime.today() + datetime.timedelta(days=1)
인쇄 방법:
print('\n Yesterday TimeStamp is : ', yesterdaytimestamp.timestamp(),
'\n Today TimeStamp is :', currenttimestamp,
'\n Tomorrow TimeStamp is: ', tomorrowtimestamp.timestamp())
출력:
Yesterday TimeStamp is : 1632842904.110993
Today TimeStamp is : 1632929304.111022
Tomorrow TimeStamp is : 1633015704.11103
사용하는 것에 전혀 문제가 없습니다.today()
선택한 답변에 표시된 것처럼, 필요한 범위가 해당되는 경우.
datetime.date.today 명령 + datetime.datelta(일=1)
또는 코드로 작업하는 사용자나 다른 사용자가 내일 날짜를 더 정확하게 처리해야 할 경우 대신 사용하는 것을 고려하십시오.today()
이것은 확실히 더 간단하고 더 읽기 쉬운 코드를 허용할 것입니다.
datetime.datetime.now() + datetime.timedelta(days=1)
이 경우 다음과 같은 결과가 반환됩니다.
datetime.datetime(2022, 2, 17, 19, 50, 19, 984925)
이제 날짜/시간 속성을 사용하여 간결하고 사람이 읽을 수 있는 방법으로 작업할 수 있다는 장점이 있습니다.
class datetime.datetime
A combination of a date and a time. Attributes: year, month, day, hour, minute, second, microsecond, and tzinfo.
예
다음을 사용하여 이 개체를 날짜 개체로 쉽게 변환할 수 있습니다.date()
:
import datetime
tomorrow = datetime.datetime.now() + datetime.timedelta(days=1)
print(f"Tomorrow's date is {tomorrow.date()}")
tomorrow.date()
사용하기 쉽고 코드를 읽는 모든 사람에게 내일 날짜를 반환한다는 것은 매우 분명합니다.다음과 .
Tomorrow's date is 2022-02-17
나중에 코드에서 해당 날짜의 날짜 번호만 필요한 경우, 이제 사용할 수 있습니다.tomorrow.day
:
print(f"Tomorrow is the {tomorrow.day}rd")
그러면 다음과 같은 결과가 반환됩니다.
Tomorrow is the 17rd
이는 어리석은 예이지만 이러한 속성에 액세스하는 것이 어떻게 유용하고 코드를 읽을 수 있게 유지할 수 있는지 알 수 있습니다.는 것을 쉽게 이해할 수 있습니다.tomorrow.day
일 번호를 반환합니다.
내일 날짜가 시작되는 정확한 시간으로 작업해야 합니까?이제 시간, 분, 초 및 마이크로초를 바꿀 수 있습니다.
# Replace all attributes except day with 0.
midnight = tomorrow.replace(
hour=0,
minute=0,
second=0,
microsecond=0)
# Print midnight as the beginning of tomorrow's date.
print(f"{midnight}")
위의 코드를 읽어보면 다음의 속성이 분명해야 합니다.tomorrow
교체 중입니다.언제midnight
이 인쇄되면 다음과 같이 출력됩니다.
2022-02-17 00:00:00
내일 날짜까지 남은 시간을 알아야 합니까?이제 이와 같은 것이 가능하고 간단하며 읽을 수 있습니다.
print(f"{midnight - datetime.datetime.now()}")
출력은 내일 날짜가 시작되는 시간(마이크로초)입니다.3:14:28.158331
사람들이 내일 날짜를 처리하기를 원할 수 있는 많은 방법들이 있습니다.이러한 속성을 처음부터 사용할 수 있도록 함으로써 더 읽기 쉬운 코드를 작성하고 나중에 불필요한 작업을 방지할 수 있습니다.
타임스탬프만 계산하려는 경우
import time
tomorrow = (int(time.time() / 86400) + 1) * 86400
언급URL : https://stackoverflow.com/questions/1506901/cleanest-and-most-pythonic-way-to-get-tomorrows-date
'programing' 카테고리의 다른 글
판다의 열 순서를 _csv 방법으로 보존 (0) | 2023.06.13 |
---|---|
LINQ에서 SQL로 절 지정(선택 사항) 기준 (0) | 2023.06.13 |
mariadb 온라인 삭제 인덱스가 작동하지 않음 (0) | 2023.06.13 |
Oracle Text는 NVARCHAR2에서 작동하지 않습니다.그 밖에 어떤 것을 사용할 수 없습니까? (0) | 2023.06.13 |
푸시된 컨트롤러에서 루트뷰 컨트롤러를 가져오려면 어떻게 해야 합니까? (0) | 2023.06.13 |