gamespree/moment.php

DateTime 包装器

该软件包的官方仓库似乎已消失,因此该软件包已被冻结。

1.2.2 2013-10-25 19:37 UTC

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. 获取日期时间段(周、月)

有时获取给定日期的时间段边界很有帮助。例如,如果今天是星期三,我需要今天这一周的起始/结束日期。允许的周期是 weekmonth

$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

在此特此授予任何获得此软件及其相关文档副本(以下简称“软件”)的人,免费使用软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本的权利,并允许向软件提供者提供软件的人这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和非侵权性保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论这些责任是因合同、侵权或其他行为引起的,无论这些责任是源自、因或与软件或软件的使用或其他处理相关。