2011-01-24 46 views
26

Làm cách nào để có được dấu thời gian của 12 giờ hôm nay, hôm qua và ngày hôm trước bằng cách sử dụng hàm strtotime() trong php?Nhận dấu thời gian của ngày hôm nay và hôm qua trong php

12 giờ là một biến và sẽ được thay đổi bởi người dùng.

+0

Phụ thuộc vào cách bạn lưu trữ 12 giờ (giờ, phút, giây?). Nói chung, bạn đã xem xét các chức năng được liệt kê trong (http://php.net/manual/en/book.datetime.php) chưa? Bạn đã thử làm gì cho đến nay? –

+0

bản sao xác định của [nhận được dấu thời gian trong php] (http://stackoverflow.com/questions/4772953/getting-timestamp-in-php) - Bạn đã hỏi ngày hôm qua. Sự khác biệt duy nhất là các đối số bạn truyền cho các hàm này. Bạn có thể tìm thấy các định dạng tương đối có thể có trong [Hướng dẫn sử dụng PHP] (http://de2.php.net/manual/en/datetime.formats.relative.php) – Gordon

+0

@Gordon: tôi xin lỗi. Tôi thực sự ngu ngốc hôm nay. tôi muốn xóa nó nhưng nó có một số câu trả lời ngay bây giờ và tôi không thể xóa nó. –

Trả lời

55
$hour = 12; 

$today    = strtotime($hour . ':00:00'); 
$yesterday   = strtotime('-1 day', $today); 
$dayBeforeYesterday = strtotime('-1 day', $yesterday); 
+4

+1 và tôi biết nitpicking của nó nhưng tôi muốn '$ today = strtotime ($ giờ.": 00: 00 ");' – Hannes

+12

@Hannes Sau đó, tôi muốn '$ giờ. ': 00: 00''. Nếu bạn không cần nội suy biến, hãy sử dụng dấu nháy đơn. : o) – deceze

+0

bạn hoàn toàn đúng - copy & paste-typo – Hannes

12

strtotime hỗ trợ một số interesting modifiers có thể được sử dụng:

$hour = 12; 

$today    = strtotime("today $hour:00"); 
$yesterday   = strtotime("yesterday $hour:00"); 
$dayBeforeYesterday = strtotime("yesterday -1 day $hour:00"); 

echo date("Y-m-d H:i:s\n", $today); 
echo date("Y-m-d H:i:s\n", $yesterday); 
echo date("Y-m-d H:i:s\n", $dayBeforeYesterday); 

Nó hoạt động như dự đoán:

2011-01-24 12:00:00 
2011-01-23 12:00:00 
2011-01-22 12:00:00 
13

OO tương đương

$oToday = new DateTime(); 
$oToday->setTime($iHour, 0); 

$oYesterday = clone $oToday; 
$oYesterday->modify('-1 day'); 

$oDayBefore = clone $oYesterday; 
$oDayBefore->modify('-1 day'); 
4

để có được sự khởi đầu của ngày hôm qua

$oDate = new DateTime(); 
$oDate->modify('-1 day'); 
echo $oDate->format('Y-m-d 00:00:00'); 

kết quả

2014-11-05 00:00:00 
0

Tính đến PHP 7 bạn có thể viết một cái gì đó giống như this:

$today = new \DateTime(); 
$yesterday = (clone $today)->modify('-1 day'); 
$dayBefore = (clone $yesterday)->modify('-1 day'); 
// Then call ->format('Y-m-d 00:00:00'); on each objects 
2

Bạn có thể dễ dàng tìm ra bất kỳ ngày sử dụng DateTime đối tượng, Nó là như vậy linh hoạt

$yesterday = new DateTime('yesterday'); 
echo $yesterday->format('Y-m-d'); 

$firstModayOfApril = new DateTime('first monday of april'); 
echo $firstModayOfApril->format('Y-m-d'); 

$nextMonday = new DateTime('next monday'); 
echo $nextMonday->format('Y-m-d'); 
0

bạn cũng có thể sử dụng new DateTime("now") cho ngày hôm nay new DateTime("1 day ago") cho ngày hôm qua hoặc tất cả có thể phân tích cú pháp theo hàm strtotime php.

Sau đó, định dạng như bạn muốn.

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