내일까지 남은 시간(자정, 시간과 분 포함)을 어떻게 말하고 "자정까지 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)
스크립트는 다음과 같이 작동합니다.
datetime
날짜 및 시간 값을 처리하는 모듈을 가져옵니다 .- 현재 시간을 얻는 데 사용됩니다
datetime.datetime.now()
. datetime
자정 객체를 생성하고 현재 시간을 빼서 자정까지의 시간을 계산합니다.- 시차에서 시간과 분을 추출합니다.
- f-문자열을 사용하여 메시지 형식을 지정합니다.
- 명령문을 사용하여 메시지를 "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 ))"
}