用户输入的开始日期和到期日期之间的倒计时

时间:2017-03-28 08:42:08

标签: php mysql date datediff

我是php的新手,我想根据不同的日期签订合同到期日。

我想在用户输入的开始日期和到期日期之间的不同日期之间进行表倒计时。用户选择开始日期和到期日期。

当用户将两个日期提交到数据库时,它会将倒数计时器启动到年,月和日。以下是示例。

+------------+---------------------------+------------+
| Start date | Duration                  | Exp. date  |
+----------------------------------------+------------+
| 2016.09.28 | 1 years, 12 months, 4 days| 2018-09-27 |
+------------+---------------------------+------------+

当它到期时,它将显示已过期。

+------------+---------------------------+------------+
| Start date | Duration                  | Exp. date  |
+----------------------------------------+------------+
| 2016-09-28 | Expired                   | 2018-09-27 |
+------------+---------------------------+------------+

是否有任何示例编码获取用户输入然后开始倒计时,显示在表格上?我怎么能用PHP做到这一点?

4 个答案:

答案 0 :(得分:0)

$startTime = '09:00:00';
$endTime = '18:00:00';

$startTimeStr = strtotime($startTime);
$endTimeStr = strtotime($endTime);
$total = $endTimeStr - $startTimeStr;

$now = strtotime(date('H:i:s'));
$remain = $endTimeStr - $now;

echo 'Countdown: '.floor($remain/3600).'h '.floor($remain/60).'min';

一个简单的倒计时代码。

答案 1 :(得分:0)

实现此目的只有两种方法

  1. Run cron jobs in your server
  2. Use Triggers in mysql
  3. 如果你想手动

      

    更新users设置Duration ='已过期'WHERE due_date> CURDATE();

答案 2 :(得分:0)

我假设当你说要在表格中显示倒数时,你的意思是说,将记录值更新为“已过期”#39;一旦它在数据库表中过期

更新数据库值到期时:

  • 每天运行一次cron作业,检查行是否过期并在过期后更新值
  • 使用CronTab运行cronjobs

希望它有用!

答案 3 :(得分:0)

如果您熟悉OPP和作曲家,这个解决方案应该有所帮助 我建议你使用composer来安装这个PHP库。它对于操纵日期非常有用。我经常在我的PHP应用程序中使用它。 Carbon Library

如果您的计算机上安装了作曲家,请使用此打开您的consosle并输入 composer require nesbot / carbon

下一个PHP脚本经过测试,效果很好。如果这个解决方案不适合你,那就让我知道我会提供另一个

<?php
require 'vendor/autoload.php';

use Carbon\Carbon;

/**
 * I consider you have retrieve the begin and expiration date. Your can use those functions to get
 * for both date year,month and date. By example you can do this 
 * $beginDay = date_format(date_create($beginDate),'d');
 * $beginMonth= date_format(date_create($beginDate),'m');
 * $beginYear = date_format(date_create($beginDate),'Y');  
 * 
 * $endDay = date_format(date_create($endDate),'d');
 * $endMonth= date_format(date_create($endDate),'m');
 * $endYear = date_format(date_create($endDate),'Y');
 * 
 * So you can replace first and second variables by this
 * $first = Carbon::create($beginYear, $beginMonth, $beginDay);
 * $second = Carbon::create($endYear, $endMonth, $endDay);
**/


$first = Carbon::create(2016, 7, 28);
$second = Carbon::create(2017, 7, 28);
$between = Carbon::now()->between($first, $second);
if(!$between === true){

    $diff = Carbon::create($first->year, $first->month, $first->day)->diff($second);

    $year = $diff->y;
    $month = $diff->m;
    $days = $diff->d;

    $Duration = "$year years, $month months, $days days";

    print $Duration;
    //You can update  in your DB
}else{
    $Duration = 'Expired';

    print $Duration;
    //You can update in your DB
}

&GT;

您可以创建一个cron作业任务,而不是每天运行脚本。或者只是在每次用户根据您的上下文触发特定操作时运行此操作。