2011-12-18 39 views
26

điều đơn giản này đã lãng phí giờ tôi cố gắng để làm cho nó làm việc, vẫn havnt làm việc nó ra ...Thêm 1 giờ để thời gian biến

tôi có

$time = '10:09'; 

Tôi muốn thêm một giờ để mà ...

Vì vậy, tôi đã cố gắng:

$time = strtotime('+1 hour'); 

strtotime('+1 hour', $time); 

$time = date('H:i', strtotime('+1 hour')); 

Không có ở trên làm việc.

Các bạn có thể giúp tôi không?

Cảm ơn.

+4

'$ time = 10: 09;' không phải là cách thích hợp để xác định thời gian – Robus

Trả lời

56

Làm việc cho tôi ..

$timestamp = strtotime('10:09') + 60*60; 

$time = date('H:i', $timestamp); 

echo $time;//11:09 

Giải thích:

strtotime('10:09') tạo dấu thời gian bằng số trong vài giây, một cái gì đó giống như 1510450372. Chỉ cần thêm hoặc xóa số giây bạn cần và sử dụng date() để chuyển đổi lại thành định dạng có thể đọc được của con người.

$timestamp = strtotime('10:09') + 60*60; // 10:09 + 1 hour 
$timestamp = strtotime('10:09') + 60*60*2; // 10:09 + 2 hours 
$timestamp = strtotime('10:09') - 60*60; // 10:09 - 1 hour 

time() cũng tạo dấu thời gian nhưng ngay bây giờ. Bạn có thể sử dụng nó theo cùng một cách.

$timestamp = time() + 60*60; // now + 1 hour 
+0

Cám ơn người bạn đời mà. Nhiều đánh giá cao. –

+0

đơn giản và công việc .. – Cleverson

+0

nếu tôi phải giảm một giờ ('10: 09 ') - 60 * 60; Sẽ làm việc ?? – TarangP

14
$time = '10:09'; 
$timestamp = strtotime($time); 
$timestamp_one_hour_later = $timestamp + 3600; // 3600 sec. = 1 hour 

// Formats the timestamp to HH:MM => outputs 11:09. 
echo strftime('%H:%M', $timestamp_one_hour_later); 
// As crolpa suggested, you can also do 
// echo date('H:i', $timestamp_one_hour_later); 

Kiểm tra PHP dẫn sử dụng cho strtotime(), strftime()date() để biết chi tiết.

BTW, trong mã ban đầu của bạn, bạn cần phải thêm một số dấu ngoặc kép nếu không bạn sẽ nhận được lỗi cú pháp PHP:

$time = 10:09; // wrong syntax 
$time = '10:09'; // syntax OK 

$time = date(H:i, strtotime('+1 hour')); // wrong syntax 
$time = date('H:i', strtotime('+1 hour')); // syntax OK 
0

Hãy coi chừng thêm 3600 !! có thể là một vấn đề về thay đổi ngày vì định dạng dấu thời gian unix sử dụng sâu bướm trước ngày.

ví dụ: 2012-03-02 23:33:33 sẽ trở thành 2014-01-13 13:00:00 bằng cách thêm 3600 sử dụng tốt hơn mktime và chức năng ngày họ có thể xử lý việc này và những thứ như thêm 25 giờ, v.v.

15

Bạn có thể làm như

echo date('Y-m-d H:i:s', strtotime('4 minute')); 
    echo date('Y-m-d H:i:s', strtotime('6 hour')); 
    echo date('Y-m-d H:i:s', strtotime('2 day')); 
-2

đơn giản và thông minh giải pháp này:

date("H:i:s", time()+3600); 
6

thử này nó được làm việc cho tôi.

$time="10:09"; 
$time = date('H:i', strtotime($time.'+1 hour')); 
echo $time; 
+0

Đáng ngạc nhiên thẳng về phía trước nhờ! $ timeFormat = date ("d/m/y H: i: s", strtotime ($ timeFormat. '+ 8 giờ')); –

+0

Trong trường hợp của tôi, tôi muốn thêm 1,30 giờ. Đưa +1.30 không hoạt động như mong đợi. Có cách nào để làm điều này không? – Pravin

+1

@Pravin '$ time = date ('H: i', strtotime ($ time. '+ 1 giờ'. '+ 30 phút'));' –

0

Bạn có thể thử mã

$ time = '10 này: 09' ;

ngày lặp lại ('H: i', strtotime ('+ 1 giờ', strtotime ($ time)));

3

cho vấn đề này hãy làm theo mã bên dưới:

$time= '10:09'; 
$new_time=date('H:i',strtotime($time.'+ 1 hour')); 
echo $new_time;` 
// now output will be: 11:09 
+1

'strtotime ($ time. '+ 1 hour')' works rất tốt - cảm ơn bạn –

+0

Trong trường hợp của tôi, tôi muốn thêm 1,30 giờ. Đưa +1.30 không hoạt động như mong đợi. Có cách nào để làm điều này không? – Pravin

Các vấn đề liên quan