更改几天前的 Php 日期

2023-12-03

我正在 Joumla 上使用一个组件,该组件返回以下格式的日期:2 个月零 6 天前。 但我需要像这样显示日期: xx 秒前 或 xx 分钟前 或 xx 小时前 或 xx 天前。

开发人员告诉我必须修改这段代码,但我对 Php 完全陌生。今天我一整天都在连续尝试超过 12 个小时,但我成功完成的只是破坏了我的网站。

那么有人可以帮我解决这个问题吗?如果需要,我愿意授予 FTP 访问权限。这是代码:

function dateFormatFromTo($from, $to = null)
 {
    $par = JComponentHelper::getParams( 'com_djclassifieds' );      
    $to = (($to === null) ? (time()) : ($to));
    $to = ((is_int($to)) ? ($to) : (strtotime($to)));
    $from = ((is_int($from)) ? ($from) : (strtotime($from)));
    $output = '';     
    $limit = $par->get('date_format_ago_limit','2');
    $units = array
    (
       "COM_DJCLASSIFIEDS_DATE_YEAR"   => 29030400, 
       "COM_DJCLASSIFIEDS_DATE_MONTH"  => 2419200,  
       "COM_DJCLASSIFIEDS_DATE_WEEK"   => 604800,   
       "COM_DJCLASSIFIEDS_DATE_DAY"    => 86400,    
       "COM_DJCLASSIFIEDS_DATE_HOUR"   => 3600,     
       "COM_DJCLASSIFIEDS_DATE_MINUTE" => 60,       
       "COM_DJCLASSIFIEDS_DATE_SECOND" => 1         
    );

    $diff = abs($from - $to);
    $suffix = (($from > $to) ? (JTEXT::_('COM_DJCLASSIFIEDS_DATE_FROM_NOW')) : (JTEXT::_('COM_DJCLASSIFIEDS_DATE_AGO')));

    $i=0;
        foreach($units as $unit => $mult){
            if($diff >= $mult){
                if($i==$limit-1 && $i>0){
                    $output .= " ".JTEXT::_('COM_DJCLASSIFIEDS_DATE_AND').' '.intval($diff / $mult)." ";
                }else{
                    $output .= ", ".intval($diff / $mult)." ";
                }   
                //$and = (($mult != 1) ? ("") : (JTEXT::_('COM_DJCLASSIFIEDS_DATE_AND')));
                //$output .= ", ".$and.intval($diff / $mult)." ";
                if(intval($diff / $mult) == 1){
                    $output .= JTEXT::_($unit); 
                }else{
                    $output .= JTEXT::_($unit."S");
                }

                $diff -= intval($diff / $mult) * $mult;
                $i++;
                if($i==$limit){ break; }            
            }
        }
        $output .= " ".$suffix;
        $output = substr($output, strlen(", "));
  return $output;
 }

因此,如果有人能帮助我,我将不胜感激。如果需要,我可以提供 FTP 访问权限。 我有 PHP 5.3

Thank


这是一个改编日期_HumanDiff class

    date_default_timezone_set('GMT');

    function getDifference($timestamp, $reference = null) {
        static $MINUTE = 60;
        static $HOUR   = 3600;    //static::$MINUTE * 60
        static $DAY    = 86400;   //static::$HOUR * 24
        static $WEEK   = 604800;  //static::$DAY * 7
        static $MONTH  = 2628000; //static::$YEAR / 12
        static $YEAR   = 31536000;//static::$DAY * 365

        $formats = array(
            array(0.7 * $MINUTE, '%d seconds ago', 1),
            array(1.5 * $MINUTE, 'a minute ago',   1),
            array( 60 * $MINUTE, '%d minutes ago', $MINUTE),
            array(1.5 * $HOUR,   'an hour ago',    1),
            array(      $DAY,    '%d hours ago',   $HOUR),
            array(  2 * $DAY,    'yesterday',      1),
            array(  7 * $DAY,    '%d days ago',    $DAY),
            array(1.5 * $WEEK,   'a week ago',     1),
            array(      $MONTH,  '%d weeks ago',   $WEEK),
            array(1.5 * $MONTH,  'a month ago',    1),
            array(      $YEAR,   '%d months ago',  $MONTH),
            array(1.5 * $YEAR,   'a year ago',     1),
            array(PHP_INT_MAX,   '%d years ago',   $YEAR)
        );

        $futureformats = array(
            array(0.7 * $MINUTE, 'in a moment',   -1),
            array(1.5 * $MINUTE, 'in a minute',   -1),
            array( 60 * $MINUTE, 'in %d minutes', -$MINUTE),
            array(1.5 * $HOUR,   'in an hour',    -1),
            array(      $DAY,    'in %d hours',   -$HOUR),
            array(  2 * $DAY,    'tomorrow',      -1),
            array(  7 * $DAY,    'in %d days',    -$DAY),
            array(1.5 * $WEEK,   'in a week',     -1),
            array(      $MONTH,  'in %d weeks',   -$WEEK),
            array(1.5 * $MONTH,  'in a month',    -1),
            array(      $YEAR,   'in %d months',  -$MONTH),
            array(1.5 * $YEAR,   'in a year',     -1),
            array(PHP_INT_MAX,   'in %d years',   -$YEAR)
        );


        if ($reference === null) {
            $reference = time();
        }

        $timestamp = ($timestamp instanceof DateTime) ? $timestamp->getTimestamp() : (is_numeric($timestamp) ? (int)$timestamp : strtotime($timestamp));
        $reference = ($reference instanceof DateTime) ? $reference->getTimestamp() : (is_numeric($reference) ? (int)$reference : strtotime($reference));

        $delta = $reference - $timestamp;

        if ($delta >= 0) {
            foreach ($formats as $format) {
                if ($delta < $format[0]) {
                    return sprintf($format[1], round($delta / $format[2]));
                }
            };
        } else {
            foreach ($futureformats as $format) {
                if (-$delta < $format[0]) {
                    return sprintf($format[1], round($delta / $format[2]));
                }
            };

        }
    }

    // will output 52 minutes ago
    echo getDifference('2014-01-15 15:24:00', '2014-01-15 16:16:12') . PHP_EOL;

    // without second param will output difference with the current time
    echo getDifference('2014-01-15 15:24:00') . PHP_EOL;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

更改几天前的 Php 日期 的相关文章

随机推荐

  • 如何使用 jq 根据内部数组中的值过滤对象数组?

    鉴于此输入 Id cb94e7a42732b598ad18a8f27454a886c1aa8bbba6167646d8f064cd86191e2b Names condescending jones loving hoover Id 186
  • css 选择器:第一个子元素

    div li first child 上面的CSS选择器的目标是什么 页面上每个 div 的第一个 li or div 的所有后代 li 其中 div 是其父级的第一个子级 The first child适用于li 应该选择lis 是任何
  • 非常不寻常的 Xcode 编译行为

    自从 Xcode 6 1 和 iOS 8 1 发布以来 我的一个应用程序停止运行 仅当我使用 发布 而不是 调试 方案在设备上执行 运行 时 我才设法重现该问题 现在来说说问题 这在调试模式下工作正常 import Foundation c
  • 如何解决 ASP.NET 中全局文件中的 Ninject 依赖关系?

    我正在将 Ninject 和 Ninject Web 程序集与 Web 表单应用程序一起使用 在 global asax 文件中 我指定了如下绑定 public class Global NinjectHttpApplication pro
  • 并发修改异常

    通过下面的代码片段 我尝试处理电子表格 但需要排除临时列 我知道我这样做的粗略方式 将异常放入 ArrayList 并处理每个列表 并且在当前行列上不断增量是不正当的 但你知道只是完成它 但是我收到了标题错误 我相信这种情况永远不会发生 我
  • 如何格式化数字 0..9 以显示 2 位数字(不是日期)

    我希望始终显示 100 以下的 2 位数字 例如 03 05 15 如何在不使用条件来检查 0 是否低于 10 的情况下附加 0 我需要将结果附加到另一个字符串 所以我不能使用 printf 您可以使用 String format 02d
  • SpriteKit - SKScene 边界不等于 SKView 边界

    最近我创建了一个新的 Xcode 游戏项目 我没有碰任何东西就运行了模板 我期待一个标准你好世界 应用程序 但我注意到一件事 我得到的不是充满背景的场景 而是场景cut在顶部和底部 我怎样才能让它充满整个屏幕 看起来默认的 SpriteKi
  • Flask - 将反馈数据存储到服务器

    我使用烧瓶应用程序作为服务器 我只是返回用户交易 但是 如果交易错误 我需要允许用户向服务器提供反馈 from flask import Flask render template request import pandas as pd p
  • 使用 Angular.js 版本 1.2.18 进行嵌套过滤

    我是第一次尝试 AngularJS 我确实重复了一个基于 JSON 数据的模板 这是一个示例 scope users name first user status name employee name second user status
  • 删除 matplotlib 图上的图例

    要将图例添加到 matplotlib 图中 只需运行legend How to remove情节中的传奇 我最接近的是运行legend 为了从数据中清空图例 但这会在右上角留下一个丑陋的白色矩形 As of 绘图库v1 4 0rc4 a r
  • 有关 SOLR 文档等的问题

    网站 分类广告网站 用户可以投放广告 搜索广告等 我打算使用SOLR进行搜索 然后仅以ID nr s返回结果 然后使用这些ID nr s查询mysql 最后用这些ID s显示结果 目前我在 MySQL 中有大约 30 个表 每个类别一个 1
  • 如何在 Windows 上将 UTF-8 字符串打印到 std::cout?

    我正在用 C 编写一个跨平台应用程序 所有字符串均在内部进行 UTF 8 编码 考虑以下简化代码 include
  • Angular 2 不使用 CORS 保存我的身份验证 Cookie

    我有一个 Angular 2 应用程序 它应该向 Node Express 后端进行身份验证 向后端发送登录请求并接收 cookie 它应该在每个连续请求中发送此 cookie 但事实并非如此 我的角度应用程序中有 class 登录服务 p
  • SCCM 不会更新手动安装的软件

    客户端计算机均为 Windows 10 专业版 64 位 如果我们有MyCompanyApp msi通过SCCM安装后 我们发现使用SCCM可以成功更新它 那里一切正常 然而 如果我要跑MyCompanyApp msi通过双击 MSI 或运
  • 在 wxPython 应用程序中实现我自己的事件循环

    我正在编写一个 wxPython 应用程序 它将进行大量的数据分析和显示 到目前为止 当两个线程尝试同时更改 GUI 中的某些内容时 我编写的方式会导致出现问题 我想做的是建立自己的在主线程上运行的简单队列这样我就可以确保 UI 更新一次发
  • 如何在Python中转换指数并去掉“e+”?

    我从 Python 开始 最近遇到了一个具有大值的数据集 我的一个字段有一个值列表 如下所示 1 3212724310201994e 18 注意e 18在数字的末尾 如何将其转换为浮点数并删除指数而不影响该值 首先 数量is已经是浮点数 您
  • 为什么我的 sizeWithFont:constrainedToSize:lineBreakMode: 总是返回零?

    我正在尝试制作一个 UITableViewCell 根据它显示的字符串的长度来调整其高度 但我对这种方法很着迷 这是我所得到的 NSString text A really long string in here CGSize theSiz
  • 当前曲目的音频信息 iOS Swift

    假设正在播放一首曲目 通过任何应用程序 我想获取歌曲信息 例如名称 当您锁定手机时 它会与专辑封面一起显示在屏幕上 我如何使用 swift 获取该信息 这是获取音频信息的示例函数 import MediaPlayer var url NSU
  • GridView 编辑按钮需要单击 2 次

    当按下 gridview 中的编辑按钮时 只有点击 2 次后才会显示编辑模板 另一个问题 要编辑的字段的值最初显示在 gridview 中 但不显示在编辑模板中 ASP代码
  • 更改几天前的 Php 日期

    我正在 Joumla 上使用一个组件 该组件返回以下格式的日期 2 个月零 6 天前 但我需要像这样显示日期 xx 秒前 或 xx 分钟前 或 xx 小时前 或 xx 天前 开发人员告诉我必须修改这段代码 但我对 Php 完全陌生 今天我一