저는 서버에서 작업 중인데 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
이것은 실험적인 해킹이지만 bash
CentOS 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
.