【问题标题】:Working with dates in PHP, how many hours old is date/time stamp?在 PHP 中使用日期,日期/时间戳是多少小时?
【发布时间】:2011-06-07 13:30:04
【问题描述】:

好的,我将日期/时间存储在 MySQL TEXT 字段中。我希望能够检查存储在数据库中的日期是否距当前日期/时间至少 48 小时。这是一些代码:

<?php
date_default_timezone_set("America/New_York");
$dtformat = "F jS, Y - g:i A";

$datetime = date($dtformat);
?>

$datetime 的值被发送到 MySQL 并放置在 TEXT 列中,我会使用 MySQL DATETIME,但时区需要不同,具体取决于用户的位置。所以我想我会用 PHP 制作我的时间戳。示例输出为January 11th, 2011 - 6:24 PM

如何获取 PHP 中的当前日期/时间并确定我的时间戳 January 11th, 2011 - 6:24 PM 是否至少 48 小时?

谢谢

【问题讨论】:

  • “好的,我将日期/时间存储在 MySQL TEXT 字段中。” --- 天哪。
  • 如果您不将日期存储为 date 类型或类似类型,您将有更多工作要做。

标签: php datetime date


【解决方案1】:

首先,您应该将数据和时间存储在适当的 timestamp 字段中,并且不是文本字段。

继续... 您可以像这样比较日期:

if(strtotime($dateFromDatabase." + 48 hours") <= strtotime("now")) {
  //It's at least 48 hours old, do your stuff
}

【讨论】:

  • strtotime("now") 看起来有点过于复杂 ;-)(我的意思是改用 time()
  • 是的,我也支持你,因为你对他的问题给出了正确的答案,但无论如何我认为帮助他做这些奇怪的事情是不对的。跨度>
【解决方案2】:
<?php
date_default_timezone_set("America/New_York");
$dtformat = "F jS, Y - g:i A";

$datetime = date($dtformat);

$i_datetime = strtotime($datetime);
$i_48_hours = strtotime('now -48 hours');
if ($i_datetime < $i_48_hours) 
{ 
    echo "The date $datetime is older than 48 hours old.";
}
?>

【讨论】:

  • 谢谢,必须从日期和时间之间的时间戳中去掉“-”才能正常工作。但它做到了!此时更改数据库会破坏我的数据
  • @Mike L.:“会毁了我的数据”---好吧,创建另一个空白的 timestamp 字段并用 php 脚本填充它。如果你现在不改变你糟糕的模式 - 你以后永远不会这样做。
【解决方案3】:

我会使用 MySQL DATETIME,但时区需要不同,具体取决于用户位置"

所以使用mysqltimestamp日期类型,它是为这种特殊目的而设计的。

http://dev.mysql.com/doc/refman/5.1/en/timestamp.html

我认为没有任何理由继续遵循当前糟糕的解决方案。更好地重写您的代码以使用timestamp

【讨论】:

  • 我最初试过这个,MySQL 网站上没有列出SET SESSION time_zone = 的可能值你知道这样的列表吗?
  • @Mike L.: en.wikipedia.org/wiki/List_of_time_zone_abbreviations 至少在这里,但缩写和 tz 名称只有在管理员已导入时区数据库时才能使用(很少见)。否则,您可以在SET time_zone='+10:00' 中使用以小时为单位的偏移量
猜你喜欢
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-07
相关资源
最近更新 更多