indieweb / date-formatter
以人类可读的格式渲染日期和日期范围,包括正确的微格式-2标记
0.3.1
2016-04-05 15:13 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- mf2/mf2: >=0.2.12
- phpunit/phpunit: ~4.0
README
以人类可读的格式渲染日期和日期范围,包括正确的微格式-2标记。
用法
带时间的日期范围
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
除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证中具体规定许可权和限制的内容,请参阅许可证。