dongqiaochi2711 2011-08-09 16:14
浏览 42
已采纳

将UNIX时间戳的PHP数组显示为特定格式的字符串

I currently have this code:

$dates = array();
foreach($data['sc_event_dates'] as $date) {
    if($date > time()) {
        $dates[] = date( empty($dates) ? "D d M": "d M", $date);
    }
}
echo implode(", ", $dates);

And it displays something like this:

Thu 11 Aug, 18 Aug, 25 Aug, 01 Sep, 08 Sep, 15 Sep

But what I need to do group the dates of each month so the output would look like this:

Thu 11, 18, 25 Aug, 01, 08, 15 Sep

$data['sc_event_dates'] holds an array of unix timestamps and is ordered in ascending order.

Also dates that are before current time need to be ignored.

Here is some example data:

Array
(
    [0] => 1313020800
    [1] => 1313625600
    [2] => 1314230400
    [3] => 1314835200
    [4] => 1315440000
    [5] => 1316044800
)

Can any one help alter my code, or produce new code, to get my desired output?

  • 写回答

2条回答 默认 最新

  • dtiu94034 2011-08-09 16:37
    关注
    $dates = array();
    foreach($data['sc_event_dates'] as $key => $date) {
        if($date > time()) {
    
            $next = ++$key;
            $format = 'd';
    
            if( empty($dates) ) {
    
                $format = 'D '.$format;
            }
    
            if( !isset( $data['sc_event_dates'][$next] ) || date('n', $date) != date('n', $data['sc_event_dates'][$next]) ) {
    
                $format .= ' M';
            }
    
            $dates[] = date( $format, $date);
        }
    }
    echo implode(", ", $dates);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 怎么判断同步时序逻辑电路和异步时序逻辑电路
  • ¥15 差动电流二次谐波的含量Matlab计算
  • ¥15 Can/caned 总线错误问题,错误显示控制器要发1,结果总线检测到0
  • ¥15 C#如何调用串口数据
  • ¥15 MATLAB与单片机串口通信
  • ¥15 L76k模块的GPS的使用
  • ¥15 请帮我看一看数电项目如何设计
  • ¥23 (标签-bug|关键词-密码错误加密)
  • ¥66 比特币地址如何生成taproot地址
  • ¥20 数学建模数学建模需要