PHP Classes
elePHPant
Icontem

PHP Moment Date: Parse, manipulate and format dates

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Info   View files View files (4)   DownloadInstall with Composer Download .zip   Reputation   Support forum   Blog    
Last Updated Ratings Unique User Downloads Download Rankings  
2014-06-17 (1 year ago) RSS 2.0 feedNot yet rated by the usersTotal: 269 All time: 7,012 This week: 1,096Up
Version License PHP version Categories  
moment-date 1.1GNU General Publi...5.3PHP 5, Time and Date
Description Author  

This class can parse, manipulate and format dates.

It can take the current date or a given date in a certain format and parse it to get the date components such as the year, month, day, hour, minute and second.

The class can also calculate the time difference between two dates, as well add or subtract time to a given date.

Picture of Ladislav Vondracek
Name: Ladislav Vondracek <contact>
Classes: 4 packages by
Country: Czech Republic Czech Republic
Age: 34
All time rank: 152214 in Czech Republic Czech Republic
Week rank: 1493 Up16 in Czech Republic Czech Republic Down

Details provided by the author  
# MomentPHP

MomentPHP is library for parsing, manipulating and formatting dates.
It's inspired by the JavaScript library [Moment.js].


## License

Is freely distributable under the terms of the [GPL-3] license.


## Install

MomentPHP is available on [Packagist], where you can get it via [Composer].

File **composer.json**:
```json
{
    "require": {
        "lawondyss/moment-php": "dev-master"
    }
}
```

Run in command-line:
```sh
php composer.phar install
```


## Parse

### Now

Get the current date and time:
```php
$moment = new MomentPHP\MomentPHP();
```

### String

Create from a string with date time. The string are acceptable same as for function `strtotime` (http://www.php.net/manual/en/function.strtotime.php).
```php
$string = '1980-12-07';
$string = '7 December 1980';
$string = '+1 week 2 days 4 hours 2 seconds';
$string = 'next Thursday';

$moment = new MomentPHP\MomentPHP($string);
```

### Integer

Create from a integer with timestamp. The integer is a number seconds from the Unix Epoch.
```php
$integer = 345061302;
$integer = time();

$moment = new MomentPHP\MomentPHP($integer);
```

### DateTime

Create from a instance of the class DateTime (http://www.php.net/manual/en/class.datetime.php):
```php
$moment = new MomentPHP\MomentPHP(new DateTime());
```

### String + Format

If the string is unrecognized or confusing, you can add its format. The format are same as for method `DateTime::createFromFormat` (http://www.php.net/manual/en/datetime.createfromformat.php).
```php
$string = '1980-07-12';
$format = 'Y-d-m';

$moment = new MomentPHP\MomentPHP($string, $format);
```

The format may be a field with more formats. Then use the first acceptable format.
```php
$string = '1980-12-07';
$format = array('U', 'Y-m-d');

$moment = new MomentPHP\MomentPHP($string, $format);
```

### Set Timezone

The Timezone is set via the third parameter to the constructor. Timezone may be string from a table with [supported Timezones], or instance of the class DateTimeZone (http://www.php.net/manual/en/class.datetimezone.php).
```php
$timezone = 'Europe/Prague';
$timezone = new DateTimeZone('Europe/Prague');

$moment = new MomentPHP\MomentPHP(null, null, $timezone);
```

## Display
For examples we have:
```php
$moment = new MomentPHP\MomentPHP('1980-12-07 19:21:42', null, 'Europe/Prague');
```

### Format()
Return formating date time. Parameter is same as for function `date` (http://www.php.net/manual/en/function.date.php).
```php
var_dump( $moment->format('d/m/Y') ); // string(10) "07/12/1980"
```

### Timestamp()
Return number seconds from the Unix Epoch.
```php
var_dump( $moment->timestamp() ); // int(345061302)
```
### Partials from date time
```php
var_dump( $moment->seconds() ); // string(2) "42"
// it`s same as
var_dump( $moment->second() );

var_dump( $moment->minutes() ); // string(2) "21"
// it's same as
var_dump( $moment->minute() );

var_dump( $moment->hours() ); // string(2) "19"
// it's same as
var_dump( $moment->hour() );

var_dump( $moment->days() ); // string(2) "07"
// it's same as
var_dump( $moment->day() );

var_dump( $moment->months() ); // string(2) "12"
// it's same as
var_dump( $moment->month() );

var_dump( $moment->years ); // string(4) "1980"
// ti's same as
var_dump( $moment->year() );

var_dump( $moment->weeks() ); //string(2) "49"
// it's same as
var_dump( $moment->week() );

// 1 (for Monday) through 7 (for Sunday)
var_dump( $moment->dayOfWeek() ); // string(1) "7"

// starting from 1
var_dump( $moment->dayOfYear() ); // string(3) "342"

var_dump( $moment->nameOfDayShort() ); // string(3) "Sun"

var_dump( $moment->nameOfDayLong() ); // string(6) "Sunday"

var_dump( $moment->dayWithSuffix() ); // string(3) "7th"

var_dump( $moment->daysInMonth() ); // string(2) "31"

var_dump( $moment->nameOfMonthShort() ); // string(3) "Dec"

var_dump( $moment->nameOfMonthLong() ); // string(8) "December"

var_dump( $moment->hourWithSuffix() ); // string(3) "7PM"

var_dump( $moment->isoDate() ); // string(25) "1980-12-07T19:21:42+01:00"

var_dump( $moment->nameOfTimezone() ); // string(13) "Europe/Prague"

var_dump( $moment->timezoneOffset() ); // int(3600)
```

### diff()
Get the difference in seconds.
```php
$momentB = new MomentPHP('2000-01-01 00:00:00', 'Y-m-d H:i:s', 'Europe/Prague');
var_dump( $momentB->diff($moment) ); // int(601619898)
```
To get the difference in another unit of measurement, pass that measurement as the second argument.
Acceptable units: sec, second, seconds, min, minute, minutes, hour, hours, day, days, month, months, year, years
```php
var_dump( $momentB->diff($moment, 'months') ); // int(227)
```
By default return number rounded down. If you want the floating point number, pass `TRUE` as the third argument.
```php
var_dump( $momentB->diff($moment, 'months', true) ); // double(227.81)
```

### from()
A common way of displaying time. This is sometimes called timeago or relative time.
```php
$momentA = new MomentPHP('1980-12-07');
$momentB = new MomentPHP('1980-12-08');

var_dump( $momentA->from($momentB) ); // string(8) "in a day"
var_dump( $momentB->from($momentA) ); // string(9) "a day ago"
```
If you can get the value without the suffix, then set second argument as `TRUE`.
```php
$momentA = new MomentPHP('1980-12-07');
$momentB = new MomentPHP('1980-12-08');

var_dump( $momentA->from($momentB, true) ); // string(5) "a day"
var_dump( $momentB->from($momentA, true) ); // string(5) "a day"
```

### fromNow()
It's equal as `from()`, but starting time is now.
```php
$moment = new MomentPHP;
$moment->add(1, 'day');

var_dump( $moment->fromNow() ); // string(8) "in a day"
```


## Manipulate

### add()
Adds an amount of days, months, years, hours, minutes and seconds. Units is same as for method `diff()`.
```php
$number = 1;
$unit = 'day';
var_dump( $moment->add($number, $unit)->days() ); // string(2) "08"
```
Adds instance of class DateInterval.
```php
$interval = DateInterval('1 day');
var_dump( $moment->add($interval)->days() ); // string(2) "08"
```
Adds array with parameters for loop add(). [unit => number]
```php
$fields = array('days' => 1, 'years' => 1);
var_dump( $moment->add($fields)->format('d|Y') ); // string(7) "08|1981"
```

### sub()
It's equal as add(), bud for subtracts.
```php
$number = 1;
$unit = 'day';
var_dump( $moment->sub($number, $unit)->days() ); // string(2) "06"
```

### startOf()
Mutates the original moment by setting it to the start of a unit of time. Units is same as for `add()`.
```php
var_dump( $moment->isoDate() ); // string(25) "1980-12-07T19:21:42+01:00"

var_dump( $moment->startOf('minutes')->isoDate() ); // string(25) "1980-12-07T19:21:00+01:00"
var_dump( $moment->startOf('hours')->isoDate() ); // string(25) "1980-12-07T19:00:00+01:00"
var_dump( $moment->startOf('days')->isoDate() ); // string(25) "1980-12-07T00:00:00+01:00"
var_dump( $moment->startOf('months')->isoDate() ); // string(25) "1980-12-01T00:00:00+01:00"
var_dump( $moment->startOf('years')->isoDate() ); // string(25) "1980-01-01T00:00:00+01:00"
```

### endOf()
Mutates the original moment by setting it to the end of a unit of time. Units is same as for `add()`.
```php
var_dump( $moment->isoDate() ); // string(25) "1980-12-07T19:21:42+00:00"

var_dump( $moment->endOf('minutes')->isoDate() ); // string(25) "1980-12-07T19:21:59+00:00"
var_dump( $moment->endOf('hours')->isoDate() ); // string(25) "1980-12-07T19:59:59+00:00"
var_dump( $moment->endOf('days')->isoDate() ); // string(25) "1980-12-07T23:59:59+00:00"
var_dump( $moment->endOf('months')->isoDate() ); // string(25) "1980-12-31T23:59:59+00:00"
var_dump( $moment->endOf('years')->isoDate() ); // string(25) "1980-12-31T23:59:59+00:00"
```

## Query

### isLeapYear()
Returns `TRUE` if that year is a leap year, and `FALSE` if it is not.
```php
$moment = new MomentPHP\MomentPHP('2012', 'Y');
var_dump( $moment->isLeapYear() ); // bool(true)

$moment = new MomentPHP\MomentPHP('2013', 'Y');
var_dump( $moment->isLeapYear() ); // bool(false)
```

### isDST()
Checks if the current moment is in daylight savings time.
```php
$moment = new MomentPHP\MomentPHP('06', 'm');
var_dump( $moment->isDST() ); // bool(true)

$moment = new MomentPHP\MomentPHP('12', 'm');
var_dump( $moment->isDST() ); // bool(false)
```

### isBefore()
Check if a moment is before another moment.
```php
var_dump( $moment->isBefore('1980-12-31') ); // bool(true)
```

If set unit, then beginning both dates set on the unit.
```php
var_dump( $moment->isBefore('1980-12-31', 'months') ); // bool(false)
```

### isAfter()
Check if a moment is after another moment. It is the exact opposite method IsBefore().

### isSame()
Check if a moment is the same as another moment.
```php
var_dump( $moment->isSame('1980-12-07') ); // bool(false) because time for compare date is "00:00:00"
var_dump( $moment->startOf('days')->isSame() ); // bool(true) because time for origin date set on "00:00:00"
```

### isMomentPHP()
Check if a variable is a MomentPHP object.
```php
var_dump( $moment->isMomentPHP(new MomentPHP\MomentPHP) ); // bool(true)
var_dump( $moment->isMomentPHP(new DateTime) ); // bool(false)
```



[Moment.js]:http://momentjs.com/
[GPL-3]:https://tldrlegal.com/license/gnu-general-public-license-v3-(gpl-3)
[Packagist]:https://packagist.org/packages/lawondyss/moment-php
[Composer]:http://getcomposer.org/
[supported Timezones]:http://www.php.net/manual/en/timezones.php
  Files folder image Files  
File Role Description
Files folder imagesrc (1 directory)
Files folder imagetests (2 files)
Accessible without login Plain text file README.md Doc. Documentation

  Files folder image Files  /  src  
File Role Description
Files folder imageMomentPHP (1 file)

  Files folder image Files  /  src  /  MomentPHP  
File Role Description
  Accessible without login Plain text file MomentPHP.php Class Class source

  Files folder image Files  /  tests  
File Role Description
  Accessible without login Plain text file bootstrap.php Test Unit test script
  Accessible without login Plain text file MomentPHPTest.phpt Test Auxiliary data

 Version Control Unique User Downloads Download Rankings  
 100%Total:269All time:7,012
 This week:0This week:1,096Up