2017 © Pedro Peláez
 

library calendar

Calendar Interfaces, tools, and basic implementation

image

popy/calendar

Calendar Interfaces, tools, and basic implementation

  • Tuesday, March 6, 2018
  • by popy-dev
  • Repository
  • 1 Watchers
  • 2 Stars
  • 46 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 5 Versions
  • 0 % Grown

The README.md

PHP Calendar Library

This repository holds interfaces defining a Calendar, whose purpose is to manipulate (format, parse) php dates, and a few utilities and very basic implementations., (*1)

Build Status Scrutinizer Code Quality Code Coverage, (*2)

Installation

composer require popy/calendar

Usage

format(new DateTime(), 'Y-m-d');

var_dump(
    $calendar->parse('2000-01-01', 'Y-m-d')
);
?>

Output :, (*3)

2018-02-10
object(DateTimeImmutable)#2 (3) {
  ["date"]=>
  string(26) "2000-01-01 21:28:31.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Europe/Berlin"
}

What's the point ?

A CalendarInterface basically reproduce the behaviour of DateTime::format and DateTime::createFromFormat. the Popy\Calendar\Calendar\GregorianCalendar is only a decorator around these methods, so, what's the point ?, (*4)

First, CalendarInterface, FormaterInterface and ParserInterface are implementable interfaces, removing some responsibilities for classes handling dates. The PresetFormater and PresetParser even co a step further by handling themselves the format to use, so the classes having to deal with dates (parsing or displaying) do no longer have to deal with format or locale., (*5)

But this package containes also other components which can be used to compose a CalendarInterface implementation, allowing to :, (*6)

  • Implement a non-gregorian calendar
  • Implement another formating syntax
  • Extend the actual formating syntax
  • Handle cases not supported by the native functions, such as parsing a date using iso8601 week & year numbers (already implemented in the package), or parse 5+ digits years (Y10k bug)

Preset Formater

The preset formater is a helper object taking any formater and a format as constructor parameter, allowing to be able to format a date without knowing which format is expected., (*7)

Inject it in any service dealing with date representation means they no longer have the responsibility to choose the format they are using (and not even the calendar). That's a way to have application-wide date format., (*8)

format(new DateTime());
?>

Output :, (*9)

2018-02-10

Preset Parser

The preset parser is a helper object taking any parse and a format as constructor parameter, allowing to be able to parse a date without knowing which format is expected., (*10)

Could be used, for instance, by a service hydrating data fetched from a webservice, without having to know which calendar/format is used., (*11)

parse('2017-05-01'));

?>

Output :, (*12)

object(DateTimeImmutable)#2 (3) {
  ["date"]=>
  string(26) "2017-05-01 21:28:31.000000"
  ["timezone_type"]=>
  int(3)
  ["timezone"]=>
  string(13) "Europe/Berlin"
}

Other components

The Versions

06/03 2018

dev-master

9999999-dev

Calendar Interfaces, tools, and basic implementation

  Sources   Download

MIT

The Development Requires

by Lewis Cowles
by Popy

calendar date datetime

06/03 2018

0.4.0-beta

0.4.0.0-beta

Calendar Interfaces, tools, and basic implementation

  Sources   Download

MIT

The Development Requires

by Lewis Cowles
by Popy

calendar date datetime

13/02 2018

0.3.0-beta

0.3.0.0-beta

Calendar Interfaces, tools, and basic implementation

  Sources   Download

The Development Requires

by Lewis Cowles
by Popy

10/02 2018

0.2.0-beta

0.2.0.0-beta

Calendar Interfaces, tools, and basic implementation

  Sources   Download

by Popy

31/01 2018

0.1.0

0.1.0.0

Calendar Interfaces, tools, and basic implementation

  Sources   Download

by Popy