Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kibatic/kibatictimezonebundle
This bundle is used to manage the display of a \DateTimeInterface in the right timezone.
https://github.com/kibatic/kibatictimezonebundle
Last synced: 17 days ago
JSON representation
This bundle is used to manage the display of a \DateTimeInterface in the right timezone.
- Host: GitHub
- URL: https://github.com/kibatic/kibatictimezonebundle
- Owner: kibatic
- License: mit
- Created: 2019-10-10T12:35:33.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-15T13:04:01.000Z (over 1 year ago)
- Last Synced: 2024-11-30T00:44:39.294Z (24 days ago)
- Language: PHP
- Homepage:
- Size: 29.3 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Kibatic Timezone Bundle
=====================[![Build Status](https://travis-ci.com/kibatic/KibaticTimezoneBundle.svg?branch=master)](https://travis-ci.com/kibatic/KibaticTimezoneBundle)
This bundle is used to manage the display of a \DateTimeInterface in the right timezone.
The common case is a project with all the \DateTimeInterface objects are
in UTC (in the DB, in PHP, ...) but the user can change the timezone in
his preferences in order to display the dates with its own timezone.Quick start
-----------installation
```bash
composer require kibatic/timezone-bundle
```in config.yml
```yml
kibatic_timezone:
default_display_timezone: "Europe/Paris" # mandatory
timezone_provider: "App\\Timezone\\MyTimezoneProvider" # optional
```in php
```php
/** @var \DateTimeInterface $date */
$date = new \DateTimeImmutable();$tzAdjuster = $container->get('kibatic_timezone.adjuster');
$dateTimeImmutable = $tzAdjuster->asDateTimeImmutable($date);
$dateTime = $tzAdjuster->asDateTime($date);
```Convert \DateTime to a given timezone with AdjusterUtil
-------------------------------------------------------```php
$date = new \DateTime('2019-10-03T15:28:06.256+02:00');
$dateModified = AdjusterUtil::changeTimezone($date, new \DateTimeZone('GMT+0'));
```Format datetime with timezone in twig
-------------------------------------in twig the syntax of tzdate is exactly the same as the
[twig date filter](https://twig.symfony.com/doc/2.x/filters/date.html).
(it calls the default date filter. The only difference is that the
timezone argument is set to false by default)```twig
{{ date | tzdate }}
{{ date | tzdate('Y/m/d') }}
```Format Datetime in twig with localization (intl)
------------------------------------------------You can use the new twig : tz_format_datetime filter. It has the same
interface than the [format_datetime filter from twig/extra-bundle](https://twig.symfony.com/doc/3.x/filters/format_datetime.html), but with a $timezone to
false by default.```twig
{{ date | tz_format_datetime('short', 'short') }}
{{ date | tz_format_datetime('long', 'long') }}
{{ date | tz_format_datetime }}
```Deprecated Localized date
-------------------------You can use the new twig : tzlocalizeddate filter. It has the same
interface than the [localizeddate filter from twig-extension intl](https://twig-extensions.readthedocs.io/en/latest/intl.html#localizeddate), but with a $timezone to
false by default.```twig
{{ date | tzlocalizeddate('short', 'short') }}
{{ date | tzlocalizeddate('long', 'long') }}
{{ date | tzlocalizeddate }}
```Timezone Provider
-----------------A timezone Provider is a service that implements TimezoneProviderInterface.
It's a service that is used to know the current timezone to display (for
a webpage, an API, in a command, for an export,...)It implements [TimezoneProviderInterface](Provider/TimezoneProviderInterface)
The adjuster as twig global variable
------------------------------------If needed, you can add the adjuster as a twig global variable :
in config/packages/twig.yaml, you can add
```yaml
twig:
globals:
timezoneAdjuster: '@kibatic_timezone.adjuster'
```and then in any twig you can use the adjuster
```twig
Timezone : {{ timezoneAdjuster.displayTimezone().name }}{# convertir un datetime en datetime avec la bone timezone #}
{{ timezoneAdjuster.asDateTime(date) }}```
Versions
--------2020-10-16 : v2.1.0
* NEW : refactoring : add a AdjusterUtil class that allows to convert datetimes
without instanciating Adjuster service
* FIX : microsecond management. The last library removed microseconds from datetime.2020-10-16 : v2.0.0
MAJOR BC BREAKS !!
* symfony 5.1+ only
* Twig 3+
* twig/extra-bundle instead of twig/extensions
* tzlocalizeddate is deprecated. Use tz_format_datetime instead2019-10-14 : v1.1.1
* hum... fix unit tests in travis for v1.1.0
2019-10-14 : v1.1.0
* Readme updated
* add tzlocalizeddate twig filter2019-10-11 : v1.0.2
* only for sf4.3+
2019-10-11 : v1.0.1
* fix deprecation in Configurator for sf4
2019-10-11 : v1.0.0
* initial publication