Find day difference between two dates (excluding weekend days)과 동일한 문제가 있지만 자바 스크립트입니다. 어떻게 유닉스 (KSH)에서 그것을 할 수 있습니까?Unix에서 두 datetimes (주말 제외)의 차이점을 찾는 방법은 무엇입니까?
2
A
답변
1
내 Bash 스크립트는 Ksh에서 비슷할 것이라고 생각합니다.
#! /bin/bash
#Usage dateDiff startDate endDate
startDate="$1 00:00:00"
endDate="$2 tomorrow 00:00:00" #tomorrow to include both days
stampEnd=`date -d "$endDate" +%s`
stampStart=`date -d "$startDate" +%s`
#difference in calendar days
daysDiff=`echo "($stampEnd - $stampStart)/(60 * 60 * 24)" | bc`;
#week day
weekDay=`date -d "$endDate" +%u`;
weekEndsLastWeek=`echo "$weekDay - 6" | bc`;
if test $weekEndsLastWeek -lt 0; then
weekEndsLastWeek=0;
fi
if test $weekEndsLastWeek -gt $daysDiff; then
weekEndsLastWeek=$daysDiff
fi
#normalize - make endDate a Sunday
if test $weekDay -ne 1; then #if not a Sunday already
daysDiffSunday=`echo "$daysDiff - ($weekDay - 1)" | bc`;
else
daysDiffSunday=$daysDiff;
fi
firstWeekends=0;
weekends=0;
if test $daysDiffSunday -ge 0; then
firstWeekends=`echo "$daysDiffSunday % 7" | bc`;
if test $firstWeekends -gt 2; then
firstWeekends=2
fi
weekends=`echo "$daysDiffSunday/7 * 2" | bc`;
fi;
echo "$daysDiff - $weekends - $firstWeekends - $weekEndsLastWeek" | bc
내 테스트 데이터 :
04/20/2012 04/22/2012 1
04/20/2012 04/25/2012 4
04/20/2012 04/30/2012 7
04/20/2012 04/28/2012 6
04/18/2012 04/21/2012 3
04/18/2012 04/22/2012 3
04/14/2012 04/21/2012 5
04/14/2012 04/22/2012 5
04/15/2012 04/21/2012 5
04/15/2012 04/22/2012 5
테스트 스크립트를
allPassed=1
while read line; do
set $line;
result=`./dateDiff $1 $2`;
expected="$3";
if test "$result" -ne "$expected"; then
echo "Error in test $line: expected $expected, result $result" 1>&2
allPassed=0
fi;
done
if test $allPassed -eq 1; then
echo "All tests passed";
fi
0
#/bin/ksh
DATE1="2005-09-01"
DATE2="2011-02-20"
typeset -L4 y1 y2
typeset -Z -R2 m d
y1=$DATE1
y2=$DATE2
c=0
while [[ $y1 -le $y2 ]]
do
for m in 1 2 3 4 5 6 7 8 9 10 11 12
do
for d in $(cal $m $y1)
do
[[ "${d# }" < "A" ]] && {
((c = c + 1))
[[ "$y1-$m-$d" = "$DATE1" ]] && d1=$c
[[ "$y1-$m-$d" = "$DATE2" ]] && {
d2=$c
break;
}
}
done
done
((y1 = y1 + 1))
done
((days = d2 - d1))
echo $days
+1
코드 대신 많은 설명을 제공 할 수 있습니까? –
관련 문제
- 1. 두 문자열 간의 차이점을 찾는 방법은 무엇입니까?
- 2. 오라클 타임 스탬프의 차이점을 찾는 방법은 무엇입니까?
- 3. 코코아에서 두 XML 파일의 차이점을 비교하고 찾는 방법은 무엇입니까?
- 4. 두 목록을 비교하고 둘 사이의 차이점을 찾는 방법은 무엇입니까?
- 5. 두 날짜 간의 연도 및 월 차이점을 찾는 방법은 무엇입니까?
- 6. jsp에서 두 날짜 간의 차이점을 찾는 방법은 무엇입니까?
- 7. PHP로 두 텍스트 파일의 차이점을 찾는 방법
- 8. uniqueID가없는 두 쿼리 간의 차이점을 찾는 방법
- 9. 두 파일을 비교하고 차이점을 추출하는 방법은 무엇입니까?
- 10. 두 양식 파일의 차이점을 비교하는 방법은 무엇입니까?
- 11. 키를 기반으로 특정 열 값 간의 차이점을 찾는 방법은 무엇입니까?
- 12. 두 DateTimes 사이의 월 수를 계산하는 방법은 무엇입니까?
- 13. 두 로컬 파일 간의 차이점을 찾는 SVN 명령이 있습니까?
- 14. OpenCV를 사용하여 프레임 간의 차이점을 찾는 방법은 무엇입니까?
- 15. 파일 차이점을 보는 방법은 무엇입니까?
- 16. 두 개의 거의 동일한 사진의 차이점을 확인하십시오.
- 17. 변수를 비교하고 파이썬에서 차이점을 찾는 방법
- 18. Visual Studio에서 두 .cs 파일 간의 차이점을 찾는 방법
- 19. PHP의 두 대형 배열 간의 차이점을 찾는 가장 좋은 방법
- 20. 두 개의 다른지도보기 지역을 비교하고 그 차이점을 찾는 방법
- 21. 두 커널의 차이점을 나열하십시오.
- 22. 두 DateTimes 사이의 백분율을 계산하는 방법
- 23. 메이븐 종속성에서 "무시"제외의 영향
- 24. 두 html 문서 간의 차이점을 보는 방법은 무엇입니까?
- 25. 두 양의 정수의 차이점을 알아내는 가장 쉬운 방법은 무엇입니까?
- 26. 간격 사이의 datetimes 목록 생성
- 27. 두 이미지의 메트릭 값을 찾는 방법은 무엇입니까?
- 28. 두 장소 사이의 위치를 찾는 방법은 무엇입니까?
- 29. 두 목록에서 일치 항목을 찾는 방법은 무엇입니까?
- 30. Scilab에서 두 곡선의 교차점을 찾는 방법은 무엇입니까?
왜 당신이 질문을 중복나요? –
이것은 중복되지 않습니다. korn 쉘 유닉스 용 스크립트가 필요 없습니다. 작동하지 않습니다. – user1345801
날짜 사이의 날짜를 찾는 코드가 있습니다. 나는 거기에서 주말을 건너 뛸 필요가있다. 예를 들어 20-4-2012에서 24-4-2012까지는 4 일이지만 21과 22는 주말이므로 결과는 2가되어야합니다. – user1345801