자정까지의 시간을 계산하고 결과를 텍스트 파일로 출력합니다.

자정까지의 시간을 계산하고 결과를 텍스트 파일로 출력합니다.

내일까지 남은 시간(자정, 시간과 분 포함)을 어떻게 말하고 "자정까지 x시간 y분 남았습니다"와 같은 텍스트 파일에 저장합니까?

죄송합니다. 저는 초보자입니다. :(

답변1

예를 들어, 이것을 사용하여 자정까지 남은 시간을 계산할 수 있습니다(GNU 가정 date).

#!/bin/bash -
mid=$(date -d 'tomorrow 00:00' +%s)
now=$(date +%s)
hours=$(((mid - now) / 3600))
mins=$(((mid - now - hours * 3600) / 60))
printf "%d hours and %d minutes remaining until midnight\n" "$hours" "$mins"

FreeBSD의 경우 date이를 사용하여 다음을 계산합니다 mid.

mid=$(date -v+1d -v0H -v0M -v0S +%s)

Linux에서는 시간 낭비가 괜찮다면 다음을 사용할 수 있습니다 systemd-analyze calendar. 이렇게 하면 cron 작업 일정을 반영하도록 매개변수를 변경하여 원래 문제를 해결할 수 있습니다.

$ systemd-analyze calendar '*-*-* 0:0:0' | grep "From now"
       From now: 15h left

답변2

요청한 것에 대해 사과할 필요가 없습니다. 저희가 도와드리겠습니다! 자정까지 남은 시간을 계산하고 "자정까지 남은 시간 x 시간 y 분" 형식으로 텍스트 파일에 저장하려면 Python과 같은 스크립트 언어를 사용할 수 있습니다. 다음은 이를 수행하는 간단한 Python 스크립트입니다.

import datetime

# Get the current time
now = datetime.datetime.now()

# Calculate the time until midnight
midnight = datetime.datetime(now.year, now.month, now.day) + datetime.timedelta(days=1)
time_until_midnight = midnight - now

# Extract hours and minutes
hours, seconds = divmod(time_until_midnight.seconds, 3600)
minutes = seconds // 60

# Format the message
remaining_time_message = f"{hours} hours and {minutes} minutes remaining until midnight"

# Save the message to a text file
with open("remaining_time.txt", "w") as file:
    file.write(remaining_time_message)

print(remaining_time_message)

스크립트는 다음과 같이 작동합니다.

  1. datetime날짜 및 시간 값을 처리하는 모듈을 가져옵니다 .
  2. 현재 시간을 얻는 데 사용됩니다 datetime.datetime.now().
  3. datetime자정 객체를 생성하고 현재 시간을 빼서 자정까지의 시간을 계산합니다.
  4. 시차에서 시간과 분을 추출합니다.
  5. f-문자열을 사용하여 메시지 형식을 지정합니다.
  6. 명령문을 사용하여 메시지를 "remaining_time.txt"라는 텍스트 파일에 저장합니다 with.

이 스크립트를 실행하면 자정까지 남은 시간을 계산하고 메시지를 지정된 텍스트 파일에 저장합니다. 그런 다음 "remaining_time.txt"의 내용을 읽어 결과를 확인할 수 있습니다.

스크립트를 실행하려면 .py 파일(예: calculate_remaining_time.py)에 저장하고 Python 인터프리터를 사용하여 실행합니다.

python calculate_remaining_time.py

스크립트는 메시지를 콘솔에 인쇄하고 "remaining_time.txt"에 저장합니다.

답변3

$ date +%H:%M | { IFS=: read h m; t=$((1440-60*h-m)); printf 'Time is %s:%s, %sh %sm until midnight\n' "$h" "$m" "$((t/60))" "$((t%60))"; }
Time is 11:38, 12h 22m until midnight

HH:MM- 형식으로 시간을 읽어서 date하루 중 남은 시간(분)으로 변환합니다. 이것은 t.

t그런 다음 이 값의 총합이 되는 시간과 분을 출력합니다.

파이프라인의 보기 좋게 인쇄된 버전:

date +%H:%M | {
    IFS=: read h m
    t=$(( 1440 - 60*h - m ))
    printf 'Time is %s:%s, %sh %sm until midnight\n' "$h" "$m" "$(( t/60 ))" "$(( t%60 ))"
}

일광 절약 시간제 전환이 발생하는 이른 아침에는 잘못된 결과가 나타날 수 있습니다. 코드의 상대적 단순성이 이를 보완합니다.


마찬가지지만 초도 고려합니다. 즉, t이제 자정까지 남은 초가 됩니다.

date +%H:%M:%S | {
    IFS=: read h m s
    t=$(( 86400 - 3600*h - 60*m - s ))
    printf 'Time is %s:%s:%s, %sh %sm %ss until midnight\n' \
        "$h" "$m" "$s" "$(( t/3600 ))" "$(( (t%3600)/60 ))" "$(( (t%3600)%60 ))"
}

관련 정보