Solaris에 추가된 시간과 분

Solaris에 추가된 시간과 분

저는 서버에서 작업 중인데 solaris해당 date -d옵션이 없습니다. gdate도 아니다.

제가 Linux에서 작업한 내용은 다음과 같습니다.

date -d "$hr:$mi $duration minutes" +'%H%M'

어디에 $hr$mi는 시간과 분, $duration분 단위입니다.

Linux에서 이것을 실행하면 다음과 같은 결과를 얻습니다.

date -d "23:28 60 minutes" +'%H%M'
0028

내가 그것을 실행하면 다음과 같은 solaris결과를 얻습니다.

date: illegal option -- d Usage: date [-u] ...

awk나이가 꽤 많아서 여기에 해결책이 있습니까 perl?

다시 인용해, 나도 같은 문제가 있었어여기, 나는 그것을 사용할 사치가 없습니다 date -d. 라이너 python가 필요합니다 perl.

답변1

약간의 어려움이 있습니다. ":" 주위로 분할하면 awk 함수가 있습니다: split(what,where,sep).

나는 솔라리스에서 그것을 시도했다(한줄 명령이다)

echo 23:28 60 |
 awk '{split($1,H,":") ; printf "%2d:%02d\n",H[1]+(H[2]+$2)/60, (H[2]+$2)%60 }'

어디

  • Split($1,H,":") 는 H[1]에 23을, H[2]에 28을 넣습니다.

사용

echo 23:28 60 |
 awk '{split($1,H,":") ; printf "%2d:%02d\n",(H[1]+(H[2]+$2)/60)%24, (H[2]+$2)%60 }'

1시간 동안 0-23 범위에 머물러 있습니다. printf의 형식 문자열을 "%02d:%02d\n"선행 문자 로 변경합니다.0

답변2

awk를 사용하면 다음을 수행할 수 있습니다.

awk -v dayt="2017 11 10 23 28 23" '{tmstmp=mktime(dayt)+60;print strftime("%M:%S",tmstmp)}' <<< ""

-v 플래그를 사용하여 전체 날짜 및 시간을 awk에 전달한 다음 awk mktime을 사용하여 날짜/시간의 숫자 표현을 가져온 다음 60을 추가하고 strftime을 추가하여 표현을 원하는 형식으로 변환합니다.

답변3

이것은 실험적인 해킹이지만 bashCentOS 7 및 Fedora 26에서 테스트한 최신 빌드에서 작동합니다.

#!/bin/bash

hr="23"
mi="28"
duration="60"

printf '%(%H%M)T\n' "$((-(19 * 60 * 60) + (hr * 60 * 60) + (mi * 60) + (duration * 60) ))"

밝혀지다 0028.

관련 정보