X 이후의 일수를 계산하는 현명한 방법은 무엇입니까?


11

2014 년 11 월 17 일부터 현재 위치에서 일하기 시작했습니다. 지금까지 며칠이 지 났는지 알고 싶습니다. Linux를 사용하여 간단하고 멋진 솔루션을 만드는 방법에 대한 아이디어가 있습니까?


나는 펄 스크립트에서 비슷한 것을하게되었다. 나는 timelocal () 함수를 사용하여 신기원에서 지정된 날짜까지 초 수를 가져오고 (예 : 2014 년 11 월 17 일) 현재 신기원 날짜에서 초를 빼고 86400 (초 단위)으로 나눕니다. 하루). 누군가가 쉘 전용 솔루션을 제공 할 것이라고 확신합니다 :)
Jeff Schaller

2
시간 산술에는 엄청나게 특별한 경우가 많이 있습니다. 유닉스 타임 스탬프를 빼고 86,400으로 나누는 것과 같은 간단한 것들이 대략적인 해답을 줄 것이지만, 파이썬과 같은 특별한 경우를 고려한 특수 시간 라이브러리를 사용하는 것이 좋습니다 dateutil.
Reid

1
날짜 차이빠르게 계산 의 일부 답변 도 여기에 도움이 될 수 있습니다.
manatwork


@ msh210 당신은 고대 코볼 코드의 코드 클리너로 커뮤니티를 제공하면서 인생을 금지하고 1 개월 동안 징역형을 선고 받았습니다.
ychaouche

답변:


14
echo $(( (`date +%s` - `date +%s -d '2014/11/17'`) / 86400 )) days ago

4
이것은 윤초가 잘못됩니다. 내 말은, 지금 은 그다지 중요하지 않지만 10k 년 정도 면 누적 오류로 충분할 수 있습니다.
Kevin

2
확률 윤초는 약 .000001 %의 오차를 유발합니다. 일광 절약 시간이 관찰되는 로케일에서이 방법으로 제공하는 잘못된 일 수와 비교할 때 이는 무시할
만합니다

2
@Kevin : 그가 어딘가에서 일한지 며칠 동안 알고 싶다면, 우리는 (극저온 화나 약의 발전이있을 때까지) 이것에 대해 너무 귀찮게하지 않을 수 있습니다 ^^
Olivier Dulac

1
@jlliagre : % s는 유닉스 시간이며, 항상 UTC이며 DST가 없습니다.
Kevin

1
직장에서 책상 뒤에서 공전하는 동안 고용 된 일수에 대해 궁금해 할 것입니다. 아마도 자정이 아닌 오전 8시에서 오후 5시 사이에있을 수 있습니다 ( date -d 2014/11/17시간이 언급되지 않은 자정의 타임 스탬프를 제공함). DST는 중요하지 않습니다.
wurtel

5

글쎄, 그것의 얼굴에 :

$ date --date="-239 days"
Mon Nov 17 15:25:40 CET 2014

스크립트에서 (매우 효율적이지 않지만 ... 아마도 윤초를 처리합니까?;))

i=0
result=""
while [ "$result" != "20141117" ]
do
    i=$((i+1))
    result=$(date --date="-$i days" +%Y%m%d)
done
echo "$i" days have passed since "$result"

심지어 ago이해된다 :date --date="239 days ago"
디지털 외상에게

1
@DigitalTrauma가 현지화되지 않았습니다. 예를 LC_ALL=ru_RU.utf8 date --date="239 дней назад"들어와 같은 결과를 제공 date --date="239"합니다.
Ruslan

@Ruslan 실제로 :)
디지털 외상

1

커맨드 라인에서 파이썬을 시도했습니다.

$ python -c "import datetime; print datetime.date.today() - datetime.date(2014,11,17)"
246 days, 0:00:00 

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.