如何修改时间前脚本以 DD-MM-YYYY 的形式显示时间

Posted

技术标签:

【中文标题】如何修改时间前脚本以 DD-MM-YYYY 的形式显示时间【英文标题】:how to modify time ago script to show time in form of DD-MM-YYYY 【发布时间】:2014-06-14 10:17:19 【问题描述】:

我有一个前一段时间的脚本,它以eg: 1 Min 的形式将 unix 标记更改为大约时间

我的脚本(php):

<?php
  $periods = array("sec", "min", "hr", "day", "week", "month", "yr");
  $lengths = array("60","60","24","7","4.35","12","10");

  $span     = time() - $row['post_time'];
  $tense    = "ago";

  for($j = 0; $span >= $lengths[$j] && $j < count($lengths)-1; $j++) 
  
  $span /= $lengths[$j];
  

  $span = round($span);

  if($span != 1) 
  $periods[$j].= "s";
  

  $time_elapse = $span.' '.$periods[$j] ; //will output in the form of 1min or 1hr
 ?> 

我的问题:我如何修改此脚本以显示 unix 时间戳,这导致 dd-mm-yyyy 格式的大约时间超过 2 年


不明白的解释一下

测试代码/脚本

 <?php
      $initial_time="946681200";//the unix timestamp is for Jan 1 2001

  $periods = array("sec", "min", "hr", "day", "week", "month", "yr");
  $lengths = array("60","60","24","7","4.35","12","10");

  $span     = time() - $initial_time;
  $tense    = "ago";

  for($j = 0; $span >= $lengths[$j] && $j < count($lengths)-1; $j++) 
  
  $span /= $lengths[$j];
  

  $span = round($span);

  if($span != 1) 
  $periods[$j].= "s";
  

  $time_elapse = $span.' '.$periods[$j] ;
 ?>

上面的代码会将 unix 时间戳 "946681200" 转换为大约时间 ie.14yrs 但我想在 DD-MM 中显示所有大于两年的 unix 时间戳-YYYY 格式

【问题讨论】:

【参考方案1】:

这段代码所做的只是创建两个 DateTime 对象:一个代表两年前,一个代表您的初始化时间。然后比较它们(DateTime 对象是可比较的)。如果$initial_date 大于两年前,它只会以您请求的格式将该日期分配给$time_elapse。否则,您的代码将照常运行。

<?php
  $initial_time="946681200";//the unix timestamp is for Dec 31, 1999

  $two_years_ago = new DateTime('-2 years');
  $initial_date  = new DateTime('@' . $initial_time);

  if ($initial_date < $two_years_ago) 
    $time_elapse = $initial_date->format('d-m-Y');
  
  else 

    $periods = array("sec", "min", "hr", "day", "week", "month", "yr");
      $lengths = array("60","60","24","7","4.35","12","10");

      $span     = time() - $initial_time;
      $tense    = "ago";

      for($j = 0; $span >= $lengths[$j] && $j < count($lengths)-1; $j++) 
      
      $span /= $lengths[$j];
      

      $span = round($span);

      if($span != 1) 
      $periods[$j].= "s";
      

      $time_elapse = $span.' '.$periods[$j] ;
  
 ?>

Demo

【讨论】:

以上是关于如何修改时间前脚本以 DD-MM-YYYY 的形式显示时间的主要内容,如果未能解决你的问题,请参考以下文章

在 UITextField swift 3.0 中使用数字键盘以 dd-MM-yyyy 格式输入日期

将日期格式从 dd-mm-yyyy 转换为 YYMMDD [重复]

如何将jquery-mobile-datebox mm-dd-yyyy显示格式的翻转框弹出显示顺序更改为dd-mm-yyyy

如何修改此脚本以允许键入另一个字符?

如何将“dd-MM-yyyy”转换为“yyyy-MM-dd”? [复制]

tomcat以服务形式开机启动