gamespree / moment.php
DateTime 包装器
该软件包的官方仓库似乎已消失,因此该软件包已被冻结。
Requires
- php: >=5.3.0
This package is not auto-updated.
Last update: 2021-01-18 08:26:42 UTC
README
_ _ _ __ ___ ___ _ __ ___ ___ _ __ | |_ _ __ | |__ _ __ | '_ ` _ \ / _ \| '_ ` _ \ / _ \ '_ \| __| | '_ \| '_ \| '_ \ | | | | | | (_) | | | | | | __/ | | | |_ _| |_) | | | | |_) | |_| |_| |_|\___/|_| |_| |_|\___|_| |_|\__(_) .__/|_| |_| .__/ |_| |_|
简介
什么是 moment.php?
用于解析、操作和格式化日期的日期库。
有任何依赖项吗?
PHP 5.3 或更高版本,因为 moment.php 基于 PHP 的 DateTime 类。
安装
以下是最简单的安装 moment 的设置方法。
{ "require": { "fightbulc/moment": "1.2.*" } }
如果您想将其添加到现有项目中,只需使用软件包引用:"fightbulc/moment": "1.2.*"
。
快速示例
1. 获取一个 moment
$m = new Moment(); // default is "now" UTC echo $m->format(); // e.g. 2012-10-03T10:00:00+0000 $m = new Moment('now', 'Europe/Berlin'); echo $m->format(); // e.g. 2012-10-03T12:00:00+0200
2. 自定义格式
2.1 PHP 仅限(标准)
$m = new Moment('2012-04-25T03:00:00', 'CET'); echo $m->format('l, dS F Y / H:i (e)'); // Wednesday, 25th April 2012 / 03:00 (Europe/Berlin)
格式基于 PHP 的 Date 函数 和 DateTime 类。
2.2 非 PHP 格式
您现在可以通过传递实现 FormatsInterface
的类来注入不同的格式处理。您可以在测试文件夹中找到一个实现所有 moment.js 格式的示例。感谢 Ashish 花费时间将 moment.js
格式与 PHP 的格式相匹配。请查看 测试脚本 以查看示例的实际操作。
每个人都可以用同样的方式编写格式类。它简单且可扩展。
// get desired formats class // create a moment $m = new \Moment\Moment('2012-04-25T03:00:00', 'CET'); // format with moment.js definitions echo $m->format('LLLL', new \Moment\CustomFormats\MomentJs()); // Wednesday, April 25th 2012 3:00 AM
3. 切换时区
$m = new Moment('2012-04-25T03:00:00', 'CET'); echo $m->setTimezone('UTC')->format(); // 2012-04-25T01:00:00+0000
4. 创建一个自定义的 moment 并对其进行操作
$m = new Moment('2012-05-15T12:30:00', 'CET'); echo $m->add('hours', 2)->format(); // 2012-05-15T14:30:00+0200 $m = new Moment('2012-05-15T12:30:00', 'CET'); echo $m->subtract('days', 7)->subtract('minutes', 15)->format(); // 2012-05-08T12:15:00+0200
5. 日期之间的差异
$m = new Moment('2013-02-01T07:00:00'); $momentFromVo = $m->fromNow(); // or from a specific moment $m = new Moment('2013-02-01T07:00:00'); $momentFromVo = $m->from('2011-09-25T10:00:00'); // result comes as a value object class echo $momentFromVo->getSeconds() // -19630800 echo $momentFromVo->getMinutes() // -327180 echo $momentFromVo->getHours() // -5453 echo $momentFromVo->getDays() // -227.21 echo $momentFromVo->getWeeks() // -32.46
6. 获取日期时间段(周、月)
有时获取给定日期的时间段边界很有帮助。例如,如果今天是星期三,我需要今天这一周的起始/结束日期。允许的周期是 week
和 month
。
$m = new Moment('2013-10-23T10:00:00'); $momentPeriodVo = $m->getPeriod('week'); // results comes as well as a value object class echo $momentPeriodVo ->getStartDate() ->format('Y-m-d'); // 2013-10-21 echo $momentPeriodVo ->getEndDate() ->format('Y-m-d'); // 2013-10-27 echo $momentPeriodVo ->getRefDate() ->format('Y-m-d'); // 2013-10-23
路线图
日期验证
处理无效日期。
有用的日期计算
通过给定的间隔获取日期周期。有效的周期包括:周、月、季度、半年、年。
$m = new Moment(); // Get the period for the 2nd quarter of 2012 $m->getPeriodByInterval('2012', 'quarter', 2); // result as array [reference] => 2012-04-01, [start] => 2012-04-01, [end] => 2012-06-30, [interval] => 2
许可证
Moment.php 在MIT许可证的条款下免费分发。
版权(c)2013 Tino Ehrich
在此特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人,免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他行为引起的,无论这些责任是源自、因或与软件或软件的使用或其他处理相关。