Làm thế nào để thêm n giờ vào một thời gian xác định?


15

Tôi muốn có một khoảng thời gian, nói 6:45 sáng và thêm một lượng giờ, nói là 1.45 giờ, để kết quả vào một thời điểm khác. Vì vậy, tôi muốn thêm 1,45 giờ đến 6:45 sáng để có thời gian khác.

Có một dòng lệnh utile cho điều đó? Tôi đã thực hiện một số Google, và đọc trang người đàn ông datevà không tìm thấy bất cứ điều gì như thế. wcalcdường như không xử lý các tính toán thời gian.

EDIT: Mar 6, 2015. Đây là kịch bản tôi đã kết thúc để sử dụng giờ thập phân. Nó có thể sử dụng một số kiểm tra lỗi để đảm bảo HH: MM sử dụng 2 chữ số cho giờ.

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

Câu trả lời:


26

Dòng lệnh:

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

$now sẽ giữ thời gian bạn chỉ định.

Bạn có thể đặt nhiều thứ ở giữa "và"; như thời điểm hiện tại và thêm 105 vào nó.


$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

Không có số thập phân nào được phép ...


Từ nhận xét: Để nhận câu trả lời trong 1,45 giờ thập phân:

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

Bóp! Cảm ơn bạn! Tôi gặp khó khăn khi đọc phần cuối cùng, nhưng phần xung quanh% H:% M là hai trích dẫn đơn. Có cách nào để làm điều này trong giờ thập phân thay vì chuyển đổi nó thành phút không? Điều đó sẽ loại bỏ một bước. Tôi thậm chí sẽ được mở để cài đặt một máy tính đặc biệt. Tôi đánh giá cao công việc của bạn mặc dù, xin đừng hiểu lầm.
Bulrush

"10 ngày" cũng hoạt động. "+2 giờ" cũng vậy. Tất nhiên bạn cũng có thể thêm một phương pháp ở đây để thực hiện vài phút từ 2,5 giờ;) Tôi chưa bao giờ tìm thấy một danh sách đầy đủ các từ bạn có thể sử dụng ...
Rinzwind 24/12/14

@Bulrush hmm không có số thập phân được phép trong giờ: D
Rinzwind

@Rinzwind Tôi không chắc nhưng bạn đã thử 2:30 hourthay 2.5 hour?
αғsнιη

1
@Rinzwind Vì vậy, một người có thể đang sử dụng 2 hour + 30 minutes;)
αғsнιη
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.