제1장: The Missing Code Library -- 7. 합 법화 날짜 형식
1. 4 로 정 제 될 수 없 는 것 은 윤년 이 아니다
2. 4 와 400 을 동시에 제거 할 수 있 는 것 은 윤년 이다.
3. 4 로 정 제 될 수 는 있 지만 400 으로 정 제 될 수 는 없 지만 100 으로 정 제 될 수 있 는 것 은 윤년 이 아니다.
4. 상기 상황 을 제외 하고 4 로 정 제 될 수 있 는 모든 것 은 윤년 이다.
코드:
validdate.sh
#!/bin/sh
# validdate.sh-- ,
exceedsDaysinMonth()
{
# , , 0
# , 1
case $(echo $1 | tr '[:upper:]' '[:lower:]') in
jan* ) days=31;; feb* ) days=28;;
mar* ) days=31;; apr* ) days=30;;
may* ) days=31;; jun* ) days=30;;
jul* ) days=31;; aug* ) days=31;;
sep* ) days=30;; oct* ) days=31;;
nov* ) days=30;; dec* ) days=31;;
*) echo "$0: Unknown month name $1" >&2; exit 1
esac
if [ $2 -lt 1 -o $2 -gt $days ]; then
return 1
else
return 0 #
fi
}
isLeepYear()
{
# , 0; , 1
# : 4
year=$1
if [ "$((year%4))" -ne 0 ]; then
return 1
elif [ "$((year%400))" ]; then
return 0
elif [ "$((year%100))" ]; then
return 1
else
return 0
fi
}
#
if [ $# -ne 3 ]; then
echo " : $0 " >&2
echo " : August 3 1962 8 3 2002" >&2
exit 1
fi
# ,
newdate="$(normdate.sh "$@")"
if [ $? -eq 1 ]; then
exit 1 # normdate
fi
month="$(echo $newdate | cut -d\ -f1)" # ,-d\ -f1 2 , \
day="$(echo $newdate | cut -d\ -f2)"
year="$(echo $newdate | cut -d\ -f3)"
# ,
if ! exceedsDaysinMonth $month "$2"; then
if [ "$month" = "Feb" -a "$2" -eq "29" ]; then
if ! isLeepYear $3; then
echo "$0: $3 , 2 29 ." >&2
exit 1
fi
else
echo "$0: : $month $2 ." >&2
exit 1
fi
fi
echo " : $newdate"
exit 0
스 크 립 트 실행: 스 크 립 트 를 실행 하려 면 명령 행 에서 '월 일 년' 이라는 형식 으로 날 짜 를 지정 해 야 합 니 다.달 은 세 자모의 줄 임 말, 온전한 달 또는 숫자 일 수 있다.하지만 해 는 네 자리 숫자 여야 한다.
실행 결과:
validdate.sh august 3 1960
: Aug 3 1960
validdate.sh 9 3 2001
: Sep 3 2001
validdate.sh feb 29 2004
: Feb 29 2004
./validdate.sh feb 29 2006
./validdate.sh: 2006 ¸ 2 29 .
스 크 립 트 분석:
이 스 크 립 트 의 사고방식 과 같이 우 리 는 합 법화 시간의 발걸음 을 쓸 수 있다.시간의 표시 형식 은 24 시간 제 를 사용 합 니 다.am/pm 접 두 사 를 사용 합 니 다.콜론 에서 시간 을 자 르 는 값 은 분 과 초 수 (주어진 것 이 있 으 면) 가 0 - 60 사이 에 있 는 지 확인 하고 am/pm 의 경우 첫 번 째 값 이 0 - 12 사이 에 있 는 지, 아니면 24 시간 제 가 0 - 24 사이 에 있 는 지 확인 합 니 다.(다행히도 시간 에는 윤초 와 다른 작은 변화 가 있어 달력 의 균형 을 유지 하기 때문에 일상적인 기초 위 에서 우 리 는 그것들 을 완전히 무시 할 수 있다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.