시간을 변환/형식화하는 명령줄 도구가 있나요? (날짜가 아니라 시간을 의미합니다!)
이것이 내가 기대하는 것입니다:
$ timeconverter --format '%s' 1h
3600
$ timeconverter --format '%h:%m:%s' 3665s
1:01:05
$ timeconverter --format '%H:%m:%s' 3665s
01:01:05
$ timeconverter --format '%Hh%Mm%Ss' 3966s
1h5m6s
$ timeconverter --format '%m' 2d
2880
$ timeconverter --format '%d' 1w
7
$ timeconverter --format '%y' 365d
1
$ timeconverter --format '%s' 1h10m
4200
여기서 %m은 분, %d는 일, %y는 연도, %h는 시간, %s는 초, %w는 주 등입니다.
내가 직접 쉘 스크립트를 작성할 수도 있지만 다른 사람이 이미 작성했을 가능성이 높으므로 시간을 절약하고 싶습니다.
답변1
답변2
GNU date
명령에는 여러분이 원하는 것의 대부분이 포함되어 있습니다. alias
원하는 명령을 더 짧게 만들기 위해 정의할 수 있습니다 .
아래 예에서는 일부 예에서 사용할 별칭을 정의했습니다.
alias timeconverter='date -u -d "1970-01-01 + '
따라서 원래 목록을 사용하면 여기에 다양한 가능성이 있습니다 (일부는 units
다른 답변에서 제안된 바와 같음)
$ timeconverter --format '%s' 1h 3600
$ date -u -d "1970-01-01 01:00" +%s
3600
$ date -u -d "1970-01-01 + 1 hour" +%s
3600
$ units -t "1 hour" seconds
3600
$ timeconverter 1 hour" +'%s'
3600
$ timeconverter --format '%h:%m:%s' 3665s 1:01:05
$ date -u -d "@3665" +'%-k:%M:%S'
1:01:05
$ units "3665 seconds" time
1 hr + 1 min + 5 sec
$ timeconverter 3665 seconds" +'%-k:%M:%S'
1:01:05
$ timeconverter --format '%H:%m:%s' 3665s 01:01:05
$ date -u -d "@3665" +'%H:%M:%S'
01:01:05
$ date -u -d "@3665" +'%T'
01:01:05
$ date -u -d "1970-01-01 + 3665 sec" +'%H:%M:%S'
01:01:05
$ date -u -d "1970-01-01 + 3665 seconds" +'%H:%M:%S'
01:01:05
$ timeconverter 3665 seconds" +'%H:%M:%S'
01:01:05
$ timeconverter --format '%Hh%Mm%Ss' 3966s 1h5m6s
$ date -u -d "@3966" +'%-kh%-Mm%-Ss'
1h6m6s
$ timeconverter --format '%m' 2d 2880
$ echo $(( $(date -u -d "1970-01-01 + 2 days" +'%s') / 60 ))
2880
$ timeconverter --format '%d' 1w 7
$ echo $(( $(date -u -d "1970-01-01 + 1 week" +'%s') / 60 / 60 / 24 ))
7
$ timeconverter --format '%y' 365d 1
$ echo $(( $(date -u -d "1970-01-01 + 365 days" +'%Y') - 1970 ))
1
$ timeconverter --format '%s' 1h10m 4200
$ date -u -d "1970-01-01 + 1 hour 10 min" +'%s'
4200
답변3
이를 수행할 수 있는 성숙한 명령줄 도구가 이미 있다고 가정하지 마십시오. 주된 이유는 아마도 그렇게 하면 많은 함정이 생길 수 있기 때문일 것입니다. 인간의 시간은 그리 선형적이지 않기 때문입니다.
예: 향후 2년이 몇 분인지 알고 싶습니다. 이 숫자는 2022년이 윤년인지 2023년이 윤년인지에 따라 달라집니다.
정말로 "표준" 단위를 사용하고 싶다면(즉, 현실을 무시하세요):
아마도 이것을 쉘 스크립트가 아니라 /usr/bin/env python3 -I -S
입력 인수를 초로 변환한 다음 필요한 정수 나누기 및 모듈러스를 계산한 후 형식 문자열을 문자열 형식 지정 함수에 전달하는 아주 작은 스크립트로 구현할 것입니다. 출력할 수 있는 모든 잠재적 필드.
어쨌든 반복하겠습니다. 이 작업을 수행하는 데는 몇 가지 좋은 이유가 있지만 많지는 않습니다. 일반적으로 결과가 무엇인지 알 수 없는 경우 기간 변환은 위험할 수 있습니다. 실제로는 오전 8시 9분 이후에 울리게 될 "알람이 600분 후에 울릴 것입니다"라고 인쇄합니다.뒤쪽에일광 절약 시간제에 맞게 시계를 조정하는 것은 나쁜 생각입니다.