%m%d%Y 형식의 잘못된 날짜 오류

%m%d%Y 형식의 잘못된 날짜 오류

%m%d%Y 형식의 문자열을 날짜로 변환하고 싶습니다.

그러나 아래와 같이 잘못된 날짜 오류가 발생합니다.

bash-4.1$ date -d '10042015' +"%m%d%Y"
date: invalid date `10042015'

어떻게 고치나요?

답변1

date +옵션은 다음과 같이 설정됩니다.산출입력이 아닌 형식입니다. 먼저 다른 도구를 사용하거나 문자열 형식을 지정해야 합니다.

date --date="$(sed 's/^\([0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9][0-9][0-9]\)$/\3-\1-\2/' <<< '10042015')"

또는

date --date="$(sed 's/\(..\)\(..\)\(....\)/\3-\1-\2/' <<< '10042015')"

아니면 단순히

date --date="$(sed 's/\(.*\)\(....\)$/\2\1/' <<< '10042015')"

(감사해요@코스타스). 두 번째 두 개는 더 짧지만 다음과 같은 이유로 첫 번째 것을 추천합니다.

  1. 타사 도구나 사용자의 문자열을 처리할 때 더 엄격하고 이상한 버그를 방지합니다. 더 중요한 것은
  2. 코드가 수행하는 작업이 더 명확하기 때문에 유지 관리가 더 쉽습니다(마지막 4자를 문자열 시작 부분으로 이동하는 대신 세 숫자를 재정렬하고 숫자 사이에 하이픈을 넣음).

관련 정보