2010-07-30 27 views
8

tôi phải gửi email khi người dùng đăng ký email chứa liên kết không hợp lệ sau sáu giờ những gì tôi đang thực hiện khi gửi email i cập nhật db với email trườngSentDate của gõ "datetime" bây giờ tôi có ngày và thời gian curent và đã được thực hiện cho cùng một formate như trong db bây giờ tôi muốn thấy rằng cả hai ngày và thời gian có differenc của 6 giờ hay không để tôi có thể làm cho liên kết không hợp lệ nhưng tôi donot biết làm thế nào để làmcách trừ hai ngày và giờ để nhận được sự khác biệt

mã của tôi đây là trông giống như im này sử dụng giá trị mã hóa cứng cho db chỉ ví dụ

$current_date_time=date("Y-m-d h:i:s"); 
$current=explode(" ",$current_date_time); 
$current_date=$current[0]; 
$current_time=$current[1]; 
$db_date_time="2010-07-30 13:11:50"; 
$db=explode(" ",$db_date_time); 
$db_date=$db[0]; 
$db_time=$db[1]; 

tôi không biết làm thế nào để tiến hành plz giúp

+0

Vui lòng xem http://stackoverflow.com/search?q=subtract+dates+php – Gordon

Trả lời

1

Tôi muốn làm việc với một dấu thời gian: Lưu giá trị được trả về bởi "thời gian() "as" savedTime "vào cơ sở dữ liệu của bạn (đó là dấu thời gian tính bằng giây). Trừ số đó từ "time()" khi bạn kiểm tra trong sáu giờ.

if ((time() - savedTime) > 6 * 3600) // more than 6h ago

hoặc

"SELECT FROM table WHERE savedTime < " . (time() - 6 * 3600)

+0

không chắc chắn nó trả lời câu hỏi, nhưng đó là câu trả lời tôi đang tìm kiếm –

18
<?php 
//$now = new DateTime(); // current date/time 
$now = new DateTime("2010-07-28 01:11:50"); 
$ref = new DateTime("2010-07-30 05:56:40"); 
$diff = $now->diff($ref); 
printf('%d days, %d hours, %d minutes', $diff->d, $diff->h, $diff->i); 

in 2 days, 4 hours, 44 minutes

thấy http://docs.php.net/datetime.diff

chỉnh sửa: Nhưng bạn cũng có thể chuyển sang các vấn đề nhiều hơn đến phía cơ sở dữ liệu, ví dụ: bằng cách lưu trữ ngày/giờ hết hạn trong bảng và sau đó thực hiện truy vấn như
... WHERE key='7gedufgweufg' AND expires<Now()
Nhiều rdbms có hỗ trợ hợp lý/tốt cho số học ngày/giờ.

+0

Hmm, mà dường như không làm việc với tất cả các phiên bản của PHP. Tôi không có phương thức 'diff()' ... –

+0

Đúng vậy. Hướng dẫn sử dụng nói '(PHP 5> = 5.3.0)' được phát hành vào tháng 6 năm 2009 ;-) – VolkerK

+0

Tôi biết, điên: -/Tôi nên thay đổi nhà cung cấp dịch vụ lưu trữ của mình, tôi đoán ... Tôi có 5.2.x –

3

Những gì bạn có thể làm là chuyển đổi cả hai ngày thành Unix epoch times, tức là số giây tương đương kể từ nửa đêm ngày 31 tháng 12 năm 1969. Từ đó bạn có thể dễ dàng suy ra khoảng thời gian đã trôi qua giữa hai ngày. Để thực hiện việc này, bạn có thể sử dụng mktime() hoặc strtotime()

Tất cả tốt nhất.

2

$ hoursDiff = (time() - strtotime ("2010-07-30 13:11:50"))/(60 * 60);

+0

bạn r trừ ngày hiện tại của thời gian từ ngày tiết kiệm thời gian và kết quả sẽ được trong giờ là nó? – user403269

+0

hey nó đang tạo ra vấn đề cho cùng một ngày giả sử tôi phải tìm sự khác biệt trong cùng một ngày nó dẫn đến giá trị âm – user403269

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