【问题标题】:get date from database and check if this date has passed从数据库中获取日期并检查该日期是否已过
【发布时间】:2014-06-01 18:07:59
【问题描述】:

我有一个保存工作的数据库。它保存作业名称和到期日期。我的数据库是 user_job(id, user_id, job_name, day, month, year)。用于在数据库中插入作业到期日期的表格包括 3 个下拉列表。用户选择日(值 1-31)然后是月(值 jan 到 dec)和年(2014 到 2024)。我使用以下函数来获取服务器的日期:

<?php

$server_date = date('Y-m-d');


$a = mysql_query("select * from `user_job` where `user_id`='$session_user_id'  ");

while($run_job = mysql_fetch_array($a)){

  $the_job_day = $run_job['day'];
  $the_job_month = $run_job['month'];
  $the_job_year = $run_job['year'];
}   

?>

我的问题是现在是否有可能将服务器的日期与我的数据库中作业的到期日期进行比较。如果过期日期已经过去,只是为了回显一条消息,“过期”。有可能这样做吗?

【问题讨论】:

  • 有什么办法吗?
  • 使用time()获取当前服务器时间,然后获取插入数据库的时间减去它然后完成

标签: php


【解决方案1】:
$the_job_time = strtotime($the_job_year .'-'. $the_job_month .'-'. $the_job_day);
$current_time = time();
if ($current_time > $the_job_time) {
    // the job have expired
}

但我建议在数据库中以不同的方式存储时间。您可以使用许多不同的日期/时间类型

【讨论】:

  • 这很完美,但我遇到了问题。今天是 2014-06-01 上面的代码只有在日期大于 2014-06-19 时才对我有效。知道为什么会在第 19 天及以上吗?
  • 为我工作。请告诉我们$the_job_year .'-'. $the_job_month .'-'. $the_job_day 在它不起作用的情况下是什么
  • 我给了我 2014 年 6 月 2 日的日期并给了我编号:1401588000 和当前日期(今天是 2014 年 6 月 1 日)给我的编号:1401649815 大于这给了我 2014 年 6 月 2 日
  • $the_job_year .'-'. $the_job_month .'-'. $the_job_day 不可能是2 June 2014。它将是一个包含至少两个- 的字符串。
  • 但是如果 $the_job_month 是june,你真的应该改变你存储日期的方式。但要修复它,请将其更改为:strtotime($the_job_day .' '. $the_job_month .' '. $the_job_year);
【解决方案2】:

有不止一种方法可以做到这一点,按效果顺序排列:

  1. 将您的日期存储为数据库中的date 列,然后使用选择语句与NOW() 进行比较
  2. 获取当前时间戳和您作业的时间戳,然后进行比较。
  3. 使用PHP的DateTime类来使用DateTime::diff()方法(见the documentation

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 2017-05-31
    • 1970-01-01
    • 2010-10-26
    • 2017-09-13
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多