2011-12-18 42 views
21

Nếu tôi có dấu thời gian ngẫu nhiên unix, làm cách nào để làm tròn nó xuống đến nửa đêm hôm nay hoặc nửa đêm do người dùng chọn. Lý do cho điều này là tôi muốn thêm giờ và phút sau nửa đêm của một ngày nào đó.unix timestamp tròn đến nửa đêm

Ví dụ: nếu dấu thời gian là 1324189035 thì làm cách nào tôi có thể xóa giờ, phút và giây để đặt dấu thời gian vào nửa đêm cho ngày đó.

+2

Nửa đêm trong múi giờ nào? –

Trả lời

19
echo date('d-m-Y H:i:s', strtotime('today', 1324189035)); 
+0

hoàn hảo. cảm ơn! – user962449

+1

điều này thật đẹp. Tôi đã nhìn thấy một nơi mà một người nào đó suy nghĩ bên ngoài của hộp đặt như '$ roundStamp = $ thời gian - ($ time% 86400);' và nó đã được thông minh nhưng không hoàn hảo. Nó tròn lên hoặc xuống tùy thuộc để nó không hoạt động. Điều này không :) –

+0

Điều này sẽ trả về một chuỗi ngày, bạn cần phải thêm 'strtotime' để có được dấu thời gian của nửa đêm mà nên quấn quanh toàn bộ mã đang được echo'ed. –

16

Bởi vì làm thế nào bạn đang sử dụng nó, tôi sẽ không tính toán nửa đêm ở tất cả: nó là xa dễ dàng hơn chỉ đơn giản là chuyển đổi những gì bạn đang thêm vào dấu thời gian vào 24 giờ giờ và sau đó sử dụng strtotime:

echo strtotime("0:00",1324189035); // 1324184400 
echo strtotime("17:50",1324189035); // 1324248600 

và nếu bạn muốn có được điều đó trong con người có thể đọc được, sử dụng datem/d/Y H:i:s:

echo date('m/d/Y H:i:s', strtotime('17:50',1324189035)); // 12/18/2011 17:50:00 
+0

Giải pháp này là thanh lịch và dễ chịu nhất. Nó cần phải được nhớ rằng đây là tất cả GMT, vì vậy để có được 17:50 trong bất kỳ múi giờ khác, bù đắp thời gian sẽ cần phải được thêm trước khi lập bản đồ thời gian này, sau đó đưa ra một lần nữa sau đó (giả sử bạn cuối cùng đang tìm kiếm một GMT/Ví dụ: UTC để tìm kiếm dữ liệu trong cơ sở dữ liệu). – Jason

+0

Có vẻ như bản đồ nửa đêm đến * trước * nửa đêm: 'echo strtotime (" 0:00 +0000 ", 1443441600);' in '1443398400' –

4

Đơn giản chỉ cần sử dụng

strtotime('today midnight'); 
Các vấn đề liên quan