【问题标题】:Insert a small cap after every date difference在每个日期差异后插入一个小写字母
【发布时间】:2013-10-21 00:14:24
【问题描述】:

我正在使用循环访问我的数据库中的信息,我想获取此循环中日期之间的差异。我可以向你展示它目前的样子(带有循环的 SQL 查询):

$get_photos = "SELECT * FROM photos ORDER BY exif_taken DESC";

foreach($sql->query($get_photos) AS $photo) {
    echo $photo['exif_taken'];
}

您可以在此处看到正在运行的循环(已删除)。您可以在网站循环中看到的前 2 张图片拍摄于 2013 年 10 月 20 日。接下来的四张照片是在 10 天前 (2013-10-10) 拍摄的。下两张照片拍摄于 2013 年 6 月 8 日,最后一张照片拍摄于 2013 年 6 月 6 日。

我想根据日期差异在图像之间插入一个小写字母。但要做到这一点,我需要获取图像之间的日期差异,而我不知道该怎么做。让我告诉你我的意思。

image-1 image-2 新日期 - 小型股 image-3 image-4 image-5 image-6 新日期 - 小型股 image-7 image- 8 新日期 - 小型股 image-9

我怎样才能做到这一点?

【问题讨论】:

  • $photo['exif_taken']的值是unix时间戳值吗?喜欢在页面上看到的1382314794
  • exif_taken 在数据库中的DATETIME

标签: php sql datediff


【解决方案1】:

您想展示这张照片和之前的照片之间的区别吗?您需要保留已输出的日期数组:

$dates = array();

foreach($sql->query($get_photos) AS $photo) {
    echo $photo['exif_taken'];
    $original_date = $photo['exif_taken'];
    if(!in_array($original_date, $dates))
        $dates[] = $original_date;

    // get the difference between this and the previous
    if(count($dates) > 1) {
        $last_key = count($dates) - 1;
        $previous_date = $dates[$last_key - 1];
        $timestamp_difference = strtotime($original_date) - strtotime($previous_date);
        $difference_in_days = floor($timestamp_difference/(60*60*24));
        echo $difference_in_days . ' days after previous entry';
    }
}

如果您的 exif_taken 变量包含的不仅仅是 dd/mm/yyyy 格式,您可能希望将其设为 dd/mm/yyyy 以便它在数组中匹配:

$original_date = date('d/m/Y', strtotime($photo['exif_taken']));

【讨论】:

  • 谢谢!但是$difference_in_days 为每张图像打印0 days after previous entryexif_taken 在数据库中的 DATETIME 中。我想检查每张图片之间的日期差异,以便在日期不同时轻松添加小写字母。
  • 谢谢 :) 做到了。
猜你喜欢
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-14
  • 1970-01-01
  • 2014-11-09
  • 2012-02-04
相关资源
最近更新 更多