3자리 길이를 보장하기 위해 날짜/시간 값을 채웁니다.

3자리 길이를 보장하기 위해 날짜/시간 값을 채웁니다.

YYYY'DDD'TTT 형식으로 타임스탬프를 렌더링하는 스크립트가 있습니다. 여기서 Y = 연도, D = 365일, T = 1000번째 날의 시간입니다.

#!/bin/bash
clear
s=$(($(date +"%H*3600+%M*60+%S")))
t=$(($s * 5 / 432))
d=$(date +%j)
y=$(date +%Y)
printf "$y\`$d\`$t" "$y" "$d" "$t"

그런데 D와 T가 항상 세 개의 문자 값을 생성하도록 수정해야 합니다(예: 1월 1일에는 "1" 대신 "001", 하루의 첫 번째 분에는 "1" 대신 "001") - I 무엇을 해야할지 모르겠습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

printf어쩌면 형식 문자열을 살펴볼 수도 있습니다 . 첫 번째 인수는 printf각 후속 인수에 대한 자리 표시자를 포함하는 형식 문자열이어야 합니다.

부호 있는 10진수 형식의 인수를 포함할 수 %d있으며 0 패딩 문자를 앞에 붙일 수 있습니다 d.0nn

printf "%d/%d/%d" 2011 2 3

출력됩니다2011/2/3

printf "%04d/%03d/%05d" 2011 2 45

출력해야 한다 2011/002/00045

답변2

date일하러 가자 !

date +%3j

그런 다음 밀리초 부분의 경우 간단한 방법은 1000에 밀리초 수를 더하고 선행 1. 따라서 스크립트의 경우:

s=$(($(date +"%H*3600+%M*60+%S")))
t=$(($s * 5 / 432 + 1000))
date "+%Y'%3j'${t#1}"

관련 정보