元素告诉我们还剩多少天,但它会在几周而不是几天内输出。我希望它只在几天内

时间:2016-04-27 05:13:37

标签: php drupal drupal-7

目前我有这个代码(见下文)。我很确定我需要调整数组或者可能在某处添加“d”。通常我只在前端工作,所以我有点踩到未知的水域。

我认为需要调整的部分是“将未来日期格式化为间隔”部分。

        if ($element['#field_name'] == 'field_test_dates') {
          foreach (element_children($element['#items']) as $key) {
            $item = $element['#items'][$key];
            $close_date = new DateObject($item['value2'], $item['timezone']);
            $start_date = new DateObject($item['value'], $item['timezone']);

            $element = 'time';
            $attributes = array(
              'class' => 'date-display-single',
              'property' => 'dc:date',
              'datatype' => 'xsd:dateTime',
              'datetime' => $close_date->format('m/d/Y H:i'),
            );

            if (REQUEST_TIME < $start_date->format('U')) {
              // Display future start date as "COMING SOON"
              $text = t('COMING SOON');
            }
            else {
              if (REQUEST_TIME >= $close_date->format('U')) {
                // Always display past dates as "CLOSED".
                $text = t('CLOSED');
              }
              else {
           // Format future dates as intervals. 
                $text = t('ENDS IN @days', array(
                  '@days' => strtoupper(date_format_interval($close_date, 1)),
                ));
              }
            }

            $vars['items'][$key]['#markup'] = "<{$element}" .drupal_attributes($attributes) . ">{$text}</{$element}>";
          }
        }

1 个答案:

答案 0 :(得分:0)

通过一些调查,您可以找到date_format_interval()

http://www.drupalcontrib.org/api/drupal/contributions!date!date_api!date_api.module/function/date_format_interval/7

正在呼叫format_interval()

http://www.drupalcontrib.org/api/drupal/drupal!includes!common.inc/function/format_interval/7

&#34;粒度&#34;您传递给date_format_interval()的参数会进一步传递到format_interval()

检查第二个链接以查看该参数的使用方式以及应传递的值。