2012-10-15 2 views
3

Mac OS에서 bash로 한밤중 이전의 시간을 얻고 싶습니다. (Linux 배포판과 같은 날짜 유틸리티가 아닙니다).Mac OS에서 bash로 자정 이전에 시간을 잡으십시오.

예를 들어, 23:56:03에 나는 "00:03:59"를 얻고 싶습니다.

+0

대체 명령을 현재 날짜로 보내고 싶으면 나중에 시간 계산을 위해 반환 된 시간을 조작 하시겠습니까? 당신이 시도한 것에 대한 모든 예는/도움이 될만한 곳에서 일합니다. – daxroc

+0

예제를 작동시키는 법을 알고 싶습니다. GeekTools에 표시하기위한 것입니다. – AsTeR

답변

0

OSX합니까 날짜 명령을 가지고

참조 - OSX Date man page

그냥 시간 사용으로 활용하려면 다음

date +"%T" 

당신은 어떤 BASIC 수학

#!/usr/bin/env bash 
hours=`date +"%H"` 
minutes=`date +"%M"` 
seconds=`date +"%S"` 
# Time till midnight 
echo `expr 23 - ${hours}`" hours, "`expr 59 - ${minutes}`" minutes, and "`expr 59 - ${seconds}`" seconds " 
+0

예, Debian 또는 Red Hat에서 찾을 수있는 것과 동일한 프로그램이 아닙니다. – AsTeR

+0

예, BSD date 명령을 기반으로합니다. OSX는 상당한 부분을 상속받습니다. – daxroc

+0

고마워,하지만이 명령을 알아, 난 그냥 위에서 설명한 필요를 충족 찾고 있습니다. – AsTeR

2
를 사용할 필요를

수학은 조금 더 쉽습니다. o 과거의 일정 시간 (1970 년 1 월 1 일)부터의 경과 된 초 수인 Unix 타임 스탬프로 작업하면 어떻게됩니까? 나는 local을 내장 함수로 사용하여 변수의 정수 속성을 설정하는 것뿐만 아니라 산술을 단순화하기위한 구문을 만들기 때문에 변수를 로컬로 만들 수 있습니다.

print_time_until_midnight() { 
    local -i now=$(date +%s) 

    if ((now % 86400 == 0)); then 
     # If it is exactly midnight, say so 
     echo "Time remaining: 00:00:00" 
     return 
    fi 

    # Get the time for 00:00:00 *tomorrow* (the next midnight) 
    local -i midnight=$(date -v+1d -v0H -v0M -v0S +%s) 

    local -i S=midnight-now 
    local -i H=S/3600 
    S=S-H*3600 

    local -i M=S/60 
    S=S-M*60 

    echo "Time remaining: $H:$M:$S" 
}