Linux의 Epoch 이후 현재 시간(초)을 가져옵니다(Bash).
나는 다음과 같은 간단한 것이 필요하다.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'
시간을 내서 man 페이지 http://man7.org/linux/man-pages/man1/date.1.html를 읽어보는 것이 좋습니다.
순수 배시 솔루션
부터bash5.0(2019년 1월 7일 출시) 내장 변수를 사용할 수 있습니다.EPOCHSECONDS.
$ echo $EPOCHSECONDS
1547624774
또 있다EPOCHREALTIME몇 초도 안 돼요
$ echo $EPOCHREALTIME
1547624774.371210
EPOCHREALTIME소수점을 제거하여 마이크로초(μs)로 변환할 수 있습니다.이것은 사용 시 관심사가 될 수 있습니다.bash의 내장 연산(( expression ))정수만 처리할 수 있습니다.
$ echo ${EPOCHREALTIME/./}
1547624774371210
위의 모든 예에서 인쇄된 시간 값은 읽기 쉽도록 동일합니다.실제로는 명령어마다 실행하는 데 약간의 시간이 걸리기 때문에 시간 값이 다릅니다.
지금까지의 답변은 모두 외부 프로그램을 사용하고 있습니다.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 이후로는, Vash 4.3 에 대해서-1:
printf -v var '%(%s)T'
(하지만 항상 논쟁하는 것이 현명할 수도 있다.)-1그래도).
사용하시는 경우-2대신 의론으로서-1Bash는 현재 날짜 대신 셸이 시작된 시간을 사용합니다.이는 경과 시간을 계산하는 데 사용할 수 있습니다.
$ printf -v beg '%(%s)T\n' -2
$ printf -v now '%(%s)T\n' -1
$ echo beg=$beg now=$now elapsed=$((now-beg))
beg=1583949610 now=1583953032 elapsed=3422
대부분의 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에 실행했을 경우PM, '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의 man 페이지: https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man1/date.1.html
스크립트를 합니다.~/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" "$@"
언급URL : https://stackoverflow.com/questions/1092631/get-current-time-in-seconds-since-the-epoch-on-linux-bash
'programing' 카테고리의 다른 글
| set -x의 역할은 무엇입니까? (0) | 2023.04.14 |
|---|---|
| Xcode 오류: 디바이스 개발을 준비하지 못했습니다. (0) | 2023.04.14 |
| Excel 열 문자를 숫자로 변환하는 알고리즘은 무엇입니까? (0) | 2023.04.14 |
| R의 Excel 파일에서 시트 이름을 추출하는 방법 (0) | 2023.04.14 |
| 메뉴, 툴바, 스택 패널 등의 세로 구분 컨트롤 - 가능합니까? (0) | 2023.04.14 |