지정된 형식의 시작 및 종료 시간인 15분 간격 반올림 매개변수

지정된 형식의 시작 및 종료 시간인 15분 간격 반올림 매개변수

Java 프로그램을 호출하는 쉘 스크립트에 매개변수를 전달하고 싶습니다...

예를 들어, 현재 시간이 2011:02:23 01:05이면 가장 가까운 전체 시간으로 이동해야 합니다. 예를 들어 1:00(Java 프로그램의 시작 시간 매개변수)인 경우 1:05 및 1인 경우: 15 (java 프로그램의 종료 시간 매개변수)) 다음 타임스탬프는 현재 시간을 기준으로 Java 프로그램에 동적으로 전달하고 싶습니다.

쉘 스크립트를 통해 Java 프로그램에 전달되는 매개변수 예시(15분 간격)

java 2011:02:23 01:00(시작 시간) 2011.02.23 01:15(종료 시간)
java 2011.02.23 01:15(시작 시간) 2011.02.23 01:30(종료 시간)

할 수 있나요? 아니면 Unix에서 위에 지정된 형식으로 날짜와 시간을 생성하는 방법이 있습니까?

참고: 이날짜: 현재 15분 간격을 가져옵니다.내 목적에 맞지 않습니다.

답변1

다음 명령을 사용하여 현재 분(또는 첫 번째 인수에 지정된 분)보다 15배 낮은 분을 가져올 수 있습니다.

a=$(date date -d "2011-02-23 01:05" +%-m)        # need only minutes.
a=${1:-"$a"}                   # or use the value from the first parameter.
a=${a#0}                       # remove one optional leading zero to
                               # avoid issues with 08 and 09.
b=$((a-a%15))                  # Round down to a 15 minutes multiple.
c=$((b+15))                    # end time

echo "$b $c"

전체 날짜 문자열이 필요한 경우 다음을 사용하세요.

$ printf 'java %s%02d\n' "$(date -d "2011-02-23 01:05" +"%Y:%m:%d %H:")" "$b"
java 2011:02:23 01:00

또는 bash에서:

$ printf -v a '%(%s)T\n' -1
$ printf '%(java %Y-%m-%d %H:%M:%S)T\n' "$(( a - a % (60*15) ))"
java 2018-08-30 22:45:00

관련 정보