타임스탬프를 변환하는 다양한 방법을 살펴볼 때, 예를 들어
2015-09-08 11:07:35
도착하다
1441703255
예를 들어 매우 일반적인 솔루션을 많이 찾았습니다.
date +%s --date "2015-09-08 11:07:35"
awk, Perl 또는 유사한 솔루션.
하지만SE 변환 답변printf
"최신" bash 버전에서 변환 에 사용되는 것 같습니다 .
이것은 몇 가지 제한 사항이 있는 스크립트 내에서 사용되므로 이에 의존할 필요가 없으며 date
대신 잠재적으로 더 빠른 방법을 시도합니다. 지금까지 내 관련 시도는 다음과 같습니다.
printf '%(%s)2015-09-08 11:07:35'
bash: printf: warning: `2': invalid time format specification
printf '%(%s)T' "2015-09-08 11:07:35"
bash: printf: 2015-09-08 11:07:35: invalid number
printf
날짜 형식 문자열을 설명하는 정확한 설명서가 누락되어 제대로 알 수 없는 것 같습니다 . 맨페이지는 info coreutils 'printf invocation'
이 문제를 해결하는 데 도움이 되지 않았습니다.
배쉬 버전은
bash --version
GNU bash, Version 4.3.11(1)-release (x86_64-pc-linux-gnu)
답변1
또 다른 질문은 "얻는 방법"을 구체적으로 묻는 것입니다.현재의에포크 이후의 시간(초)입니다. 날짜 형식 및 매개변수배쉬 매뉴얼(아래로 스크롤하여 printf
):
%(datefmt)T
printf
출력에서 결과 날짜/시간 문자열을 사용하도록 합니다 .날짜 기능strftime
(3)의 형식 문자열 입니다 . 동토론 epoch 이후의 초 수를 나타내는 정수입니다.-1
현재 시간을 나타내는 것과-2
쉘이 호출된 시간을 나타내는 두 가지 특수 매개변수 값을 사용할 수 있습니다 . 인수가 지정되지 않으면-1
인수가 제공된 것처럼 변환이 작동합니다. 이는 일반적인 동작에 대한 예외입니다printf
.
따라서 인수는 에포크 이후의 정수 초여야 합니다(예를 참조하세요)."에포크 타임스탬프를 사람이 읽을 수 있는 형식으로 변환하는 방법"에 대한 답변).
¹ 특수 값( -1
또는 -2
)을 사용하거나 인수를 사용하지 않는 경우(이 경우 기본값은 -1
)