(1327일)과 같은 날짜 값을 다음 형식으로 요약하는 쉬운 방법이 있습니까?
xx years; xx month; xx days
각 값에 대해 별도의 변수를 사용할 필요가 없습니다.
명령을 사용하는 것이 좋습니다.
답변1
월 또는 연도를 포함하는 기간의 경우 월 또는 연도에 따라 길이가 다르기 때문에 특정 날짜를 참조해야 합니다.
지금부터 1327일까지 몇 년/개월/일이 있는지 알고 싶으면,날짜 도구:
$ ddiff -f '%Y years, %m months, %d days' today "$(dadd now 1327)"
3 years, 7 months, 19 days
(때때로 또는 ddiff
으로 사용 가능한 것을 찾을 수도 있습니다 . 동일하게 적용됩니다 ).datediff
dateutils.ddiff
dadd
이것이 제가 2017-09-25에 얻은 내용입니다(왜냐하면 2017-09-25부터 2021-05-14까지이기 때문입니다). 2018년 3월 1일에 실행하면 다음과 같은 결과를 얻습니다.
3 years, 7 months, 17 days
왜냐하면 그것은 2018년 3월 1일부터 2021년 10월 18일까지이기 때문입니다.
딱 2018년 3월 1일, 1327일앞으로줄게 3 years, 7 months, 16 days
.
더 많은 정보를 원하시면 방문해주세요GNU 도구를 사용하여 결과 날짜 대신 날짜 기간을 계산하고 형식을 지정하려면 어떻게 해야 합니까?
답변2
나는 이것이 Bash에서 상당히 정확한 솔루션을 제공하기에는 너무 복잡하다고 생각합니다(즉, 윤일과 같은 달력의 이상한 점에 관한 것). 달력 프로그래밍 라이브러리(예: Python)를 사용해 보세요.
#!/usr/bin/env python3
import sys, calendar
from datetime import *
difference = timedelta(days=int(sys.argv[1]))
now = datetime.now(timezone.utc).astimezone()
then = now - difference
years = now.year - then.year
months = now.month - then.month
days = now.day - then.day
if days < 0:
days += calendar.monthrange(then.year, then.month)[1]
months -= 1
if months < 0:
months += 12
years -= 1
print('{} year(s); {} month(s); {} day(s)'.format(years, months, days))
통화 예:
$ ./human-redable-date-difference.py 1327
3 year(s); 7 month(s); 19 day(s)
물론 입력 및 출력 형식을 원하는 대로 조정하여 요일 이외의 요인에 따른 시차를 선택할 수도 있습니다.