จะเพิ่ม n ชั่วโมงในเวลาที่กำหนดได้อย่างไร?


15

ฉันต้องการที่จะมีเวลาพูด 6:45 น. และเพิ่มจำนวนชั่วโมงพูด 1.45 ชั่วโมงเพื่อให้ได้ผลลัพธ์ในเวลาอื่น ดังนั้นฉันต้องการเพิ่ม 1.45 ชั่วโมงถึง 6:45 น. เพื่อให้ได้เวลาอีกครั้ง

มีการใช้บรรทัดคำสั่งสำหรับสิ่งนั้นหรือไม่? ฉันทำ Googling เสร็จแล้วและอ่าน man page สำหรับdateและไม่พบอะไรแบบนั้น wcalcดูเหมือนจะไม่จัดการกับการคำนวณเวลา

แก้ไข: 6 มีนาคม 2015 นี่คือสคริปต์ที่ฉันใช้กับชั่วโมงทศนิยม สามารถใช้การตรวจสอบข้อผิดพลาดบางอย่างเพื่อให้แน่ใจว่า 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

Squeee! ขอขอบคุณ! ฉันมีปัญหาในการอ่านส่วนสุดท้าย แต่ส่วนรอบ ๆ % H:% M เป็นสองคำพูดเดียว มีวิธีการทำเช่นนี้ในชั่วโมงทศนิยมแทนการแปลงเป็นนาที? ที่จะกำจัดขั้นตอน ฉันจะเปิดให้ติดตั้งเครื่องคิดเลขพิเศษด้วยซ้ำ ฉันขอขอบคุณที่ทำงานของคุณ แต่โปรดอย่าเข้าใจผิด
Bulrush

"+10 วัน" ก็ใช้ได้เช่นกัน ดังนั้น "2 ชั่วโมง" แน่นอนคุณสามารถเพิ่มวิธีที่นี่เพื่อทำนาทีจาก 2.5 ชั่วโมง;) ฉันไม่เคยพบรายการคำที่คุณสามารถใช้ ...
Rinzwind

@Bulrush hmm ไม่อนุญาตให้ใช้ทศนิยมกับชั่วโมง: 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.