indieweb/date-formatter

以人类可读的格式渲染日期和日期范围,包括正确的微格式-2标记

0.3.1 2016-04-05 15:13 UTC

This package is auto-updated.

Last update: 2024-08-28 08:39:49 UTC


README

以人类可读的格式渲染日期和日期范围,包括正确的微格式-2标记。

Build Status

用法

带时间的日期范围

echo IndieWeb\DateFormatter::format('2013-10-08T07:00:00-07:00', '2013-10-08T17:00:00-07:00');

输出结果

<time class="dt-start" datetime="2013-10-08T07:00:00-07:00">
  October 8, 2013 from 7:00am
</time>
to
<time class="dt-end" datetime="2013-10-08T17:00:00-07:00">
  5:00pm (-0700)
</time>

(添加空格以提高可读性)

在浏览器中显示为

October 8, 2013 from 7:00am to 5:00pm (-0700)

不带时间的日期范围

echo IndieWeb\DateFormatter::format('2013-10-08', '2013-10-11');

输出结果

<time class="dt-start" datetime="2013-10-08">
  October 8
</time>
-
<time class="dt-end" datetime="2013-10-11">
  11, 2013
</time>

在浏览器中显示为

October 8-11, 2013

其他示例

此示例展示了随着起始日期和结束日期之间的共同点越来越少,输出结果中添加了越来越多的数据。

use IndieWeb\DateFormatter;

echo DateFormatter::format('2013-09-03', '2013-09-08');
// September 3-8, 2013

echo DateFormatter::format('2013-09-28', '2013-10-03');
// September 28 through October 3, 2013

echo DateFormatter::format('2013-12-30', '2014-01-02');
// December 30, 2013 through January 2, 2014

以下是包含时间的类似示例。

use IndieWeb\DateFormatter;

echo DateFormatter::format('2013-10-08T07:00:00-07:00', '2013-10-08T17:00:00-07:00');
// October 8, 2013 from 7:00am to 5:00pm (-0700)

echo DateFormatter::format('2013-10-08T07:00:00-07:00', '2013-10-10T17:00:00-07:00');
// October 8, 2013 at 7:00am until Oct 10 at 5:00pm (-0700)

echo DateFormatter::format('2013-08-31T07:00:00-07:00', '2013-09-01T17:00:00-07:00');
// August 31, 2013 7:00am until September 1 at 5:00pm (-0700)

echo DateFormatter::format('2013-12-31T07:00:00-07:00', '2014-01-01T17:00:00-07:00');
// December 31, 2013 7:00am until January 1, 2014 5:00pm (-0700)

其他类名

如果您希望HTML包含除“dt-start”和“dt-end”之外的微格式类,可以通过附加参数传递类名。

echo IndieWeb\DateFormatter::format('2013-10-08T07:00:00-0700', '2013-10-08T08:50:00-0700', 'dt-departure', 'dt-arrival');
<time class="dt-departure" datetime="2013-10-08T07:00:00-07:00">
  October 8, 2013 from 7:00am
</time>
to
<time class="dt-arrival" datetime="2013-10-08T8:50:00-07:00">
  8:50am (-0700)
</time>

测试

请参阅测试以获取不同输出格式的完整示例。

未来改进

  • 可选地,在日期范围输出中显示星期几
  • 选项:使用简写月份名称而不是完整名称
  • 使解析器对其他输入格式更宽容

如果您看到其他希望处理的输入或输出格式,请提交一个描述问题的Issue。如果您将其编写为测试用例,则加分。

  public function testDescriptionOfWhatYoureTesting() {
    $this->_testEquals('Final Text Output', 'start-date', 'end-date');
  }

许可证

版权所有 © 2015 Aaron Parecki

根据Apache许可证版本2.0(“许可证”)进行许可;除非根据适用法律或书面同意,否则不得使用此文件,除非遵守许可证。您可以在以下位置获得许可证副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证中具体规定许可权和限制的内容,请参阅许可证。