使用php获取普通用户可读的日期/时间

使用php获取普通用户可读的日期/时间,php,datetime,format,date-formatting,Php,Datetime,Format,Date Formatting,我知道这个问题以前被问过2-3次,我正在使用一个函数,我在这些问题的答案()中找到了这个函数,但它对我来说似乎不太好,我在评论中问过,但没有得到任何答复,所以我在这里开始一个新问题。下面是从datetime(mysql类型)获取纯文本日期/时间的代码 函数getElapsedTime($time\u stamp) { $ts=转换日期时间($time\U戳记); $time_stamp=$ts; $time\u difference=strottime('now')-$time\u stamp;

我知道这个问题以前被问过2-3次,我正在使用一个函数,我在这些问题的答案()中找到了这个函数,但它对我来说似乎不太好,我在评论中问过,但没有得到任何答复,所以我在这里开始一个新问题。下面是从datetime(mysql类型)获取纯文本日期/时间的代码

函数getElapsedTime($time\u stamp) { $ts=转换日期时间($time\U戳记); $time_stamp=$ts; $time\u difference=strottime('now')-$time\u stamp; 如果($时差>=60*60*24*365.242199) { return get_time_ago_string($time_stamp,60*60*24*365.242199,'year'); } elseif($时差>=60*60*24*30.4368499) { return get_time_ago_string($time_stamp,60*60*24*30.4368499,'month'); } 其他(时差>=60*60*24*7) { return get_time_ago_string($time_stamp,60*60*24*7,'week'); } 其他(时差>=60*60*24) { return get_time_ago_string($time_stamp,60*60*24,'day'); } elseif($时差>=60*60) { 返回get_time_ago_字符串($time_stamp,60*60,'hour'); } elseif($time\u difference//尝试此函数

function time_ago($ptime) {
  $ptime = strtotime($ptime);
  if ($ptime) {
    $etime = time() - $ptime;
    if ($etime < 1)
      return 'few seconds';
    $a = array(
        12 * 30 * 24 * 60 * 60 => 'year',
        30 * 24 * 60 * 60 => 'month',
        24 * 60 * 60 => 'day',
        60 * 60 => 'hour',
        60 => 'minute',
        1 => 'second'
    );
    foreach ($a as $secs => $str) {
      $d = $etime / $secs;
      if ($d >= 1) {
        $r = round($d);
        return $r . ' ' . $str . ($r > 1 ? 's' : '') . '';
      }
    }
  }
  return '0';
}
//输出

43 minutes

few seconds
//试试这个功能

function time_ago($ptime) {
  $ptime = strtotime($ptime);
  if ($ptime) {
    $etime = time() - $ptime;
    if ($etime < 1)
      return 'few seconds';
    $a = array(
        12 * 30 * 24 * 60 * 60 => 'year',
        30 * 24 * 60 * 60 => 'month',
        24 * 60 * 60 => 'day',
        60 * 60 => 'hour',
        60 => 'minute',
        1 => 'second'
    );
    foreach ($a as $secs => $str) {
      $d = $etime / $secs;
      if ($d >= 1) {
        $r = round($d);
        return $r . ' ' . $str . ($r > 1 ? 's' : '') . '';
      }
    }
  }
  return '0';
}
//输出

43 minutes

few seconds

使用PHP的类要简单得多:-

function time_ago($time_stamp)
{
    $time = new DateTime($time_stamp);
    $now = new DateTime();
    $diff = $now->diff($time);

    return $diff->format("%h hours, %i minutes ago");
}
$diff
是的一个实例

如果您愿意,您可以使用以下命令在
$time\u stamp
中指定接收的时间:-

$time = DateTime::createFromFormat('Your format here');

显然您可以。

使用PHP类要简单得多:-

function time_ago($time_stamp)
{
    $time = new DateTime($time_stamp);
    $now = new DateTime();
    $diff = $now->diff($time);

    return $diff->format("%h hours, %i minutes ago");
}
$diff
是的一个实例

如果您愿意,您可以使用以下命令在
$time\u stamp
中指定接收的时间:-

$time = DateTime::createFromFormat('Your format here');

当然可以。

你确定你的输出是正确的吗?我得到了“几秒钟”的“2013-05-23 15:59:58”系统日期和时间是完美的。你的输出是什么-回音日期('Y:m:DH:I:s');?我想正如你说的,我回音了这个“日期('Y:m:DH:I:s'),我得到了这个“2013:05:23 13:19:27”怎么了?现在是16:50,显示的是13:19?时区正确(UTC+05:30)钦奈、加尔各答、孟买、新德里亚尔你确定你的输出正确吗?我得到了“几秒钟”的“2013-05-23 15:59:58”系统日期和时间是完美的这是你的输出-回音日期('Y:m:DH:I:s'))?我想,正如你所说,我重复了这个“日期('Y:m:dh:I:s'),我得到了这个“2013:05:23 13:19:27”,这是怎么回事?现在是16:50,显示的是13:19?时区是正确的(UTC+05:30)钦奈、加尔各答、孟买、新德里我需要这样的东西来做一个新项目,我的实施是。请随意使用,这是一项正在进行的工作,所以它会改变。我需要这样的东西来做一个新项目,我的实施是。请随意使用,这是一项正在进行的工作,所以它会改变。