지정된 시간에 n 시간을 추가하는 방법은 무엇입니까?


15

오전 6시 45 분에 시간을두고 1.45 시간이라는 시간을 더 추가하여 다른 시간을 가져오고 싶습니다. 그래서 나는 다른 시간을 얻기 위해 1.45 시간을 6:45 am에 추가하고 싶습니다.

그것에 대한 명령 줄 utile이 있습니까? 나는 인터넷 검색을 수행하고 매뉴얼 페이지를 읽었으며 그 date와 같은 것을 찾지 못했습니다. wcalc시간 계산을 처리하지 않는 것 같습니다.

편집 : 2015 년 3 월 6 일. 이것은 십진 시간을 사용하기 위해 끝내는 스크립트입니다. HH : MM이 시간 동안 2 자리를 사용하는지 확인하기 위해 약간의 오류 검사를 사용할 수 있습니다.

#!/bin/bash
# Mar 6, 2015
# Add decimal hours to given time. 
# Syntax: timeadd HH:MM HOURS
# There MUST be 2 digits for the hours in HH:MM.
# Times must be in military time. 
# Ex: timeadd 05:51 4.51
# Ex: timeadd 14:12 2.05
echo " "
# If we have less than 2 parameters, show instructions and exit.
if [ $# -lt 2 ]
then
    echo "Usage: timeadd HH:MM DECHOURS"
    exit 1
fi
intime=$1
inhours=$2
# Below is arithmetic expansion $(())
# The bc calculator is standard on Ubuntu. 
# Below rounds to the minute. 
inminutes=$(echo "scale=0; ((($inhours * 60)*10)+5)/10" | bc)
echo "inminutes=$inminutes"
now=$(date -d "$intime today + $inminutes minutes" +'%H:%M')
echo "New time is $now"

답변:


27

명령 줄 :

$ now=$(date -d "06:45 today + 105 minutes" +'%H:%M')
$ echo "$now"
08:30

$now 지정한 시간을 유지합니다.

"와"사이에 많은 것을 넣을 수 있습니다. 현재 시간처럼 105를 추가하십시오.


$now=$(date -d "06:45 today + 2.5 hour" +'%H:%M')
date: invalid date `06:45 today + 2.5 hour'
$now=$(date -d "06:45 today + 2:30 hour" +'%H:%M')
date: invalid date `06:45 today + 2:30 hour'
$ now=$(date -d "06:45 today + 2 hour" +'%H:%M')
$ echo "$now"
08:45

소수는 허용되지 않습니다 ...


의견에서 : 1.45 소수 시간에 대한 답변을 얻으려면 :

$ now=$(date -d "06:45 today + $((145 * 60 / 100)) minutes" +'%H:%M')
$ echo "$now:
8:12

스퀴! 감사합니다! 마지막 부분을 읽는 데 문제가 있었지만 % H : % M 주위의 부분은 두 개의 작은 따옴표입니다. 분 단위로 변환하는 대신 십진수 시간 에이 작업을 수행 할 수있는 방법이 있습니까? 그것은 단계를 제거 할 것입니다. 나는 특별한 계산기를 설치하는 데 열려있었습니다. 그래도 귀하의 작업에 감사드립니다, 오해하지 마십시오.
Bulrush

"+10 일"도 작동합니다. "+2 시간"도 마찬가지입니다. 물론 당신은 또한 여기에 2.5 시간에서 분을 만드는 방법을 추가 할 수 있습니다;) 나는 당신이 사용할 수있는 단어의 전체 목록을 찾지 못했습니다 ...
Rinzwind

@Bulrush 흠 시간 : D에 허용되는 소수 없음 : D
Rinzwind

@Rinzwind 확실하지 않지만 2:30 hour대신 시도 했 2.5 hour습니까?
αғsнιη

1
@Rinzwind 그래서 가능한 하나는 2 hour + 30 minutes;)를 사용하고 있습니다
αғsнιη
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.