Hướng dẫn hẹn giờ trong php

Tôi thực sự bế tắc khi thêm X phút vào một datetime, sau khi đọc rất nhiều sách hướng dẫn sử dụng google và PHP, tôi dường như không đi đến đâu cả.

Định dạng thời gian ngày tôi có là:

2011-11-17 05:05: year-month-day hour:minute

Phút để thêm sẽ chỉ là một số trong khoảng từ 0 đến 59

Tôi muốn đầu ra giống như định dạng đầu vào với số phút được thêm vào.

Ai đó có thể cho tôi một ví dụ mã làm việc, vì những nỗ lực của tôi dường như không đưa tôi đến bất cứ nơi nào?

  • php
  • date
  • time

68 hữu ích 0 bình luận 134k xem chia sẻ

answer

127

$minutes_to_add = 5;

$time = new DateTime['2011-11-17 05:05'];
$time->add[new DateInterval['PT' . $minutes_to_add . 'M']];

$stamp = $time->format['Y-m-d H:i'];

127 hữu ích 5 bình luận chia sẻ

answer

90

Lớp DateTime của PHP có một phương thức sửa đổi hữu ích , trong đó có văn bản dễ hiểu.

$dateTime = new DateTime['2011-11-17 05:05'];
$dateTime->modify['+5 minutes'];

Bạn cũng có thể sử dụng phép nội suy chuỗi hoặc nối chuỗi để tham số hóa nó:

$dateTime = new DateTime['2011-11-17 05:05'];
$minutesToAdd = 5;
$dateTime->modify["+{$minutesToAdd} minutes"];

90 hữu ích 1 bình luận chia sẻ

answer

30

$newtimestamp = strtotime['2011-11-17 05:05 + 16 minute'];
echo date['Y-m-d H:i:s', $newtimestamp];

kết quả là

2011-11-17 05:21:00

Bản demo trực tiếp là here

Nếu bạn chưa quen strtotime, bạn nên php.netkhám phá sức mạnh tuyệt vời của nó :-]

30 hữu ích 1 bình luận chia sẻ

answer

16

Bạn có thể làm điều này với các chức năng gốc dễ dàng:

strtotime['+59 minutes', strtotime['2011-11-17 05:05']];

Tôi muốn giới thiệu phương thức lớp DateTime, vừa được Tim đăng.

16 hữu ích 0 bình luận chia sẻ

answer

6

Tôi nghĩ rằng điều này sẽ giúp một số khi xử lý các múi giờ quá. Giải pháp sửa đổi của tôi dựa trên giải pháp của @Tim Cooper, câu trả lời đúng ở trên.

$minutes_to_add = 10;
$time = new DateTime[];
**$time->setTimezone[new DateTimeZone['America/Toronto']];**
$time->add[new DateInterval['PT' . $minutes_to_add . 'M']];
$timestamp = $time->format["Y/m/d G:i:s"];

Dòng in đậm, dòng 3, là sự bổ sung. Tôi hy vọng điều này sẽ giúp một số người là tốt.

6 hữu ích 0 bình luận chia sẻ

answer

4

Một chút câu trả lời muộn, nhưng phương pháp tôi sẽ sử dụng là:

// Create a new \DateTime instance
$date = DateTime::createFromFormat['Y-m-d H:i:s', '2015-10-26 10:00:00'];

// Modify the date
$date->modify['+5 minutes'];

// Output
echo $date->format['Y-m-d H:i:s'];

Hoặc trong PHP> = 5,4

echo [DateTime::createFromFormat['Y-m-d H:i:s', '2015-10-26 10:00:00']]->modify['+5 minutes']->format['Y-m-d H:i:s']

4 hữu ích 0 bình luận chia sẻ

answer

3

Nếu bạn muốn đưa ra một biến có chứa số phút.

Sau đó, tôi nghĩ rằng đây là một cách tuyệt vời để đạt được điều này.

$minutes = 10;
$maxAge = new DateTime['2011-11-17 05:05'];
$maxAge->modify["+{$minutes} minutes"];

3 hữu ích 0 bình luận chia sẻ

answer

2

Sử dụng strtotime["+5 minute", $date];

Thí dụ:

$date = "2017-06-16 08:40:00";
$date = strtotime[$date];
$date = strtotime["+5 minute", $date];
echo date['Y-m-d H:i:s', $date];

2 hữu ích 0 bình luận chia sẻ

answer

1

Như Brad và Nemoden đã lưu ý trong câu trả lời của họ ở trên, strtotime [] là một chức năng tuyệt vời. Cá nhân, tôi thấy Đối tượng DateTime tiêu chuẩn quá phức tạp đối với nhiều trường hợp sử dụng. Tôi chỉ muốn thêm 5 phút vào thời gian hiện tại, ví dụ.

Tôi đã viết một hàm trả về một ngày dưới dạng một chuỗi với một số tham số tùy chọn:
1.] time: String | ví dụ: "+5 phút" [mặc định = thời gian hiện tại]
2.] định dạng: Chuỗi | ví dụ: "Ymd H: i: s" [mặc định = "Ymd H: i: s O"]

Rõ ràng, đây không phải là một phương pháp đầy đủ tính năng. Chỉ cần một chức năng nhanh chóng và đơn giản để sửa đổi / định dạng ngày hiện tại.

function get_date[$time=null, $format='Y-m-d H:i:s O']
{
    if[empty[$time]]return date[$format];
    return date[$format, strtotime[$time]];
}

// Example #1: Return current date in default format
$date = get_date[]; 

// Example #2: Add 5 minutes to the current date
$date = get_date["+5 minutes"]; 

// Example #3: Subtract 30 days from the current date & format as 'Y-m-d H:i:s'
$date = get_date["-30 days", "Y-m-d H:i:s"]; 

1 hữu ích 0 bình luận chia sẻ

answer

0

Thêm một ví dụ nữa về hàm để thực hiện việc này: [thay đổi định dạng thời gian và khoảng thời gian theo cách bạn thích chúng theo hàm này cho function.dateđiều này cho DateInterval ]:

[Tôi cũng đã viết một dạng thay thế của hàm bên dưới .]

// Return adjusted time.

function addMinutesToTime[ $dateTime, $plusMinutes ] {

    $dateTime = DateTime::createFromFormat[ 'Y-m-d H:i', $dateTime ];
    $dateTime->add[ new DateInterval[ 'PT' . [ [integer] $plusMinutes ] . 'M' ] ];
    $newTime = $dateTime->format[ 'Y-m-d H:i' ];

    return $newTime;
}

$adjustedTime = addMinutesToTime[ '2011-11-17 05:05', 59 ];

echo '

Adjusted Time: ' . $adjustedTime . '

'
. PHP_EOL . PHP_EOL;

0 hữu ích 0 bình luận chia sẻ

answer

0

Không sử dụng biến:

 $yourDate->modify["15 minutes"];
 echo $yourDate->format[ "Y-m-d H:i"];

Với việc sử dụng một biến:

 $interval= 15;
 $yourDate->modify["+{$interval } minutes"];  
 echo $yourDate->format[ "Y-m-d H:i"];

0 hữu ích 0 bình luận chia sẻ

answer

0

định dạng datetime một dòng mysql

$mysql_date_time = [new DateTime[]]->modify['+15 minutes']->format["Y-m-d H:i:s"];

0 hữu ích 0 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Chủ Đề