쉘 스크립트에서 날짜 형식(예: 2018년 10월 3일)을 43376으로 변환하려고 합니다. 이는 Excel에서 셀 형식 옵션을 숫자로 사용하여 수행할 수 있습니다. 쉘 스크립트에서 이를 어떻게 수행합니까?
답변1
이에 대한 정보를 가정하면블로그예, 다음 공식이 이를 수행해야 합니다.
date_to_msidx(){ echo $(( $(TZ=UTC date -d "$1" +%s) / 86400 + 25569)); }
date_to_msidx 10/03/2018
43376
date_to_msidx 07/05/1998
35981
이것은"1900년 날짜 체계"Microsoft; 1900년 1월 1일 이후의 날짜는 1로 시작하지만틀리게1900년은 윤년(실제 시간보다 하루 더 길음)이었다고 생각해 보세요.
공식은 먼저 date +%s
이를 Unix 시간(1970/01/01 이후의 초)으로 변환하고 이를 하루의 초 수(86400)로 나눈 다음 1900/01/01에서 1970/01/까지의 일 수를 더합니다. 01(25569)은 위에서 설명한 시스템을 사용하여 미리 계산됩니다.
이는 GNU 날짜를 다른 시스템/언어에 적용하는 것은 독자의 연습 문제로 남겨둔다고 가정합니다.