Linux, Bash의 Epoch 이후 현재 시간 (초)을 가져옵니다.
간단한 date
날짜 가 필요 하지만 1970 년 이후 현재 날짜, 시간, 분 및 초 대신 초 단위로 표시됩니다.
date
그 옵션을 제공하지 않는 것 같습니다. 쉬운 방법이 있습니까?
이것은 작동해야합니다 :
date +%s
추가하기 만하면됩니다.
주어진 날짜 (예 : 1973 년 10 월 21 일)에 대한 에포크 (1970 년 1 월 1 일) 이후의 초를 가져옵니다.
date -d "Oct 21 1973" +%s
초를 다시 날짜로 변환
date --date @120024000
이 명령 date
은 매우 다양합니다. 날짜로 할 수있는 또 다른 멋진 일 (뻔뻔스럽게에서에서 복사 date --help
). 다음 주 금요일 오전 9시 (미국 서해안)에 현지 시간 표시
date --date='TZ="America/Los_Angeles" 09:00 next Fri'
더 나은 방법은 매뉴얼 페이지 http://man7.org/linux/man-pages/man1/date.1.html 을 읽는 데 시간이 좀 걸립니다
지금까지 모든 답변은 외부 프로그램을 사용합니다 date
.
Bash 4.2부터는 인수와 함께 사용될 때 ( 형식에 대한 정보를 위해) 에서 처리 한 형식으로 현재 날짜를 출력 printf
하는 새로운 수정자가 있습니다.%(dateformat)T
-1
dateformat
strftime(3)
man 3 strftime
따라서 순수한 Bash 솔루션의 경우 :
printf '%(%s)T\n' -1
또는 결과를 변수에 저장 해야하는 경우 var
:
printf -v var '%(%s)T' -1
외부 프로그램이나 서브 쉘이 없습니다!
Bash 4.3부터는 -1
다음을 지정하지 않아도됩니다 .
printf -v var '%(%s)T'
(그러나 -1
그럼에도 불구하고 항상 논증을하는 것이 더 현명 할 수 있습니다 ).
당신이 사용하는 경우 -2
대신 인수로 -1
, 배쉬 쉘 대신 현재 날짜의 시작 (그러나 당신이 원하는 왜?) 된 시간을 사용합니다.
대부분의 Awk 구현에서 :
awk 'BEGIN {srand(); print srand()}'
이것은 @pellucide가 한 일에 대한 확장이지만 Mac의 경우 :
특정 날짜 (예 : 1973 년 10 월 21 일)에 대한 에포크 (1970 년 1 월 1 일) 이후의 시간 (초)을 결정하려면
$ date -j -f "%b %d %Y %T" "Oct 21 1973 00:00:00" "+%s"
120034800
완성도를 위해 시간 부분을 형식에 추가했습니다. 그 이유는 date
당신이 어떤 날짜를 주었 든 현재 시간을 제공된 값에 더할 것이기 때문 입니다. 예를 들어, 오후 4시 19 분에 '00 : 00 : 00 '부분없이 위 명령을 실행하면 시간이 자동으로 추가됩니다. "1973 년 10 월 21 일"은 "1973 년 10 월 21 일 16:19:00"로 구문 분석됩니다. 그것은 당신이 원하는 것이 아닐 수도 있습니다.
타임 스탬프를 다시 날짜로 변환하려면
$ date -j -r 120034800
Sun Oct 21 00:00:00 PDT 1973
날짜 구현에 대한 Apple의 설명서 페이지 : https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html
순수한 배쉬 솔루션
bash
5.0 이후 ( 2019 년 1 월 7 일에 릴리스 ) 내장 변수를 사용할 수 있습니다 EPOCHSECONDS
.
$ echo $EPOCHSECONDS
1547624774
또한이 EPOCHREALTIME
초 분수를 포함한다.
$ echo $EPOCHREALTIME
1547624774.371215
EPOCHREALTIME
소수점을 제거하여 마이크로 초 (μs)로 변환 할 수 있습니다. 정수만 처리 할 수있는 bash
내장 연산 (( expression ))
을 사용할 때 관심이있을 수 있습니다 .
$ echo ${EPOCHREALTIME/./}
1547624774371215
위의 모든 예에서 인쇄 시간 값은 가독성을 높이기 위해 동일합니다. 실제로 각 명령을 실행하는 데 약간의 시간이 걸리므로 시간 값이 달라집니다.
이 bash 스크립트 (my ~/bin/epoch
)를 사용하십시오.
#!/bin/bash
# get seconds since epoch
test "x$1" == x && date +%s && exit 0
# or convert epoch seconds to date format (see "man date" for options)
EPOCH="$1"
shift
date -d @"$EPOCH" "$@"
'IT story' 카테고리의 다른 글
SQL Server의 INSERT 또는 UPDATE 솔루션 (0) | 2020.02.09 |
---|---|
장고에서 디버깅하는 좋은 방법? (0) | 2020.02.09 |
Node.js로 명령 행 바이너리 실행 (0) | 2020.02.09 |
JavaScript / jQuery에서 배열에 특정 문자열이 포함되어 있는지 확인하는 방법은 무엇입니까? (0) | 2020.02.09 |
파이썬 3의 상대적 수입 (0) | 2020.02.09 |