Bagaimana cara menambahkan n jam ke waktu yang ditentukan?


15

Saya ingin punya waktu, katakan 6:45 pagi, dan tambahkan beberapa jam, katakan 1,45 jam, untuk menghasilkan waktu lain. Jadi saya ingin menambahkan 1,45 jam hingga 6:45 pagi untuk mendapatkan waktu lain.

Apakah ada utile baris perintah untuk itu? Saya telah melakukan beberapa Googling, dan membaca halaman manual untuk datedan belum menemukan yang seperti itu. wcalcsepertinya tidak menangani perhitungan waktu.

EDIT: 6 Maret 2015. Ini adalah skrip yang saya gunakan untuk menggunakan jam desimal. Itu bisa menggunakan beberapa pengecekan kesalahan untuk memastikan HH: MM menggunakan 2 digit selama berjam-jam.

#!/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"

Jawaban:


27

Garis komando:

$ now=$(date -d "06:45 today + 105 minutes" +'%H:%M')
$ echo "$now"
08:30

$now akan menahan waktu yang Anda tentukan.

Anda dapat menempatkan banyak hal di antara "dan"; suka waktu saat ini dan tambahkan 105 untuk itu.


$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

Tidak ada desimal yang diizinkan ...


Dari komentar: Untuk mendapatkan jawaban selama 1,45 jam desimal:

$ now=$(date -d "06:45 today + $((145 * 60 / 100)) minutes" +'%H:%M')
$ echo "$now:
8:12

Squeee! Terima kasih! Saya kesulitan membaca bagian terakhir, tetapi bagian di sekitar% H:% M adalah dua kutipan tunggal. Apakah ada cara untuk melakukan ini dalam jam desimal alih-alih mengubahnya menjadi menit? Itu akan menghilangkan langkah. Saya bahkan akan terbuka untuk memasang kalkulator khusus. Saya menghargai pekerjaan Anda, tolong jangan salah paham.
Bulrush

"+10 hari" juga berfungsi. Begitu juga "+2 jam". Tentu saja Anda juga dapat menambahkan metode di sini untuk membuat menit dari 2,5 jam;) Saya tidak pernah menemukan daftar kata-kata lengkap yang dapat Anda gunakan ...
Rinzwind

@Bulrush hmm tidak ada desimal diizinkan dengan jam: D
Rinzwind

@Rinzwind Saya tidak yakin tetapi apakah Anda mencoba 2:30 hourbukan 2.5 hour?
αғsнιη

1
@Rinzwind Jadi satu kemungkinan menggunakan 2 hour + 30 minutes;)
αғsнιη
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.