2012-05-15 31 views
9

Dưới đây là một ví dụ về chuỗi datetime tôi đang làm việc với:Cách thêm giờ vào thời gian của chuỗi ngày giờ này?

Tue May 15 10:14:30 +0000 2012 

Đây là nỗ lực của tôi thêm một giờ vào nó:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->add(new DateInterval('P1h')); 

Nhưng dòng thứ hai cung cấp cho các lỗi mà nó couldn' t được chuyển đổi.

Cảm ơn.

Trả lời

46

Bạn nên thêm một T trước khi bán thời gian đặc điểm kỹ thuật:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->add(new DateInterval('PT1H')); 

Xem tài liệu DateIntervalconstructor: "Giai đoạn"

Định dạng bắt đầu bằng chữ P, cho Mỗi khoảng thời gian được biểu diễn bằng một giá trị số nguyên, theo sau là một bộ định thời gian. Nếu thời lượng chứa các phần tử thời gian, phần đó của đặc điểm kỹ thuật là trước chữ T.

(Nhấn mạnh thêm)

+0

1 DateInterval luôn ưa thích. –

2

Sử dụng strtotime():

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$time = strtotime($time) + 3600; // Add 1 hour 
$time = date('D M j G:i:s O Y', $time); // Back to string 
echo $time; 
8

câu trả lời trước đây làm việc. Tuy nhiên, tôi thường sử dụng sửa đổi datetime trong các trang web được lưu trữ bên ngoài của mình. Kiểm tra php manual để biết thêm thông tin. Với mã đề xuất, cần làm việc như thế này:

$time = 'Tue May 15 10:14:30 +0000 2012'; 
$dt = new DateTime($time); 
$dt->modify('+ 1 hour'); 

Đối với những người không sử dụng định hướng đối tượng, chỉ cần sử dụng nó theo cách này (dòng đầu tiên DateTime chỉ để mang somethng mới vào chủ đề này, tôi sử dụng nó để kiểm tra máy chủ thời gian):

$dt = new DateTime("@".$_SERVER['REQUEST_TIME']); // convert UNIX epoch to PHP DateTime 
$dt = date_modify($dt, "+1 hour"); 

nhất,

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