如何解决将mySQL日期时间列转换为“从x天/小时开始”的脚本
|| 我有一个带有事件的MySQL表。每个事件都有一个指示其开始时间的datetime列。 我正在寻找一种使用PHP生成类似于此字符串的方法: \“事件X在2小时内开始\” 还应该工作几天,几周和几个月: \“事件X在5天/周/月开始”解决方法
您应该有一个变量,其中包含直到日期可用的秒数。我的示例函数如下。
<?php
function timeRemaining($total) {
if (!$total || $total <= 0) return false;
// define your ranges here (desc order),the keys will go to output.
$elements = array(
\"years\" => 60*60*24*30*12,\"months\" => 60*60*24*30,\"weeks\" => 60*60*24*7,\"days\" => 60*60*24,\"hours\" => 60*60,\"minutes\" => 60,\"seconds\" => 1
);
// compute in a cycle to compress the code
$return = array();
foreach ($elements as $name => $dur) {
$return[$name] = floor($total / $dur);
$total -= $return[$name] * $dur;
}
// return data in the array form
return $return;
}
// how much till new year?
echo \"<pre>\",print_r(timeRemaining(mktime(0,1,2012)-time()));
echo \"</pre>\";
?>
只需将其复制粘贴到任何php文件中进行测试,例如,它返回的数组将保留年,月等,直到新的一年。您可以通过将返回值提供给另一个生成字符串的函数来定制输出,只是不要忘了对照ѭ1来检查该值,这意味着时间已经过去。
请注意,月份使用的是简化的30天范围,此处的年份设置为360天,而不是现实世界中的365.25天。
希望它会有用。
, 为此,我首先将日期格式更改为:
Select DATE_FORMAT(date_of,\'%d/%m/%Y\') as example from tbl
php功能:
<?php
function days_ago($time)
{
$today = mktime(0,date(\'m\'),date(\'d\'),date(\'Y\'));
$time_array = explode(\"/\",$time);
if(count($time_array) < 2)
{
$time = \"N/A\";
}
else
{
$time = mktime(0,date($time_array[1]),date($time_array[0]),date($time_array[2]));
$daysAgo = $today - $time;
$time = ($daysAgo/86400);
}
return $time;
}
?>
, 我从这里摘录了以下片段。
<?php
$dateDiff = $date1 - $date2;
$fullDays = floor($dateDiff/(60*60*24));
$fullHours = floor(($dateDiff-($fullDays*60*60*24))/(60*60));
$fullMinutes = floor(($dateDiff-($fullDays*60*60*24)-($fullHours*60*60))/60);
echo \"Differernce is $fullDays days,$fullHours hours and $fullMinutes minutes.\";
?>
“ 5”是数据库日期,“ 6”是当前日期。有帮助吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。