?
Biblioteca PHP para converter data em vários calendários
A maneira preferida de instalar esta extensão é através do compositor.
Correr
composer require --prefer-dist meysampg/intldate " * "ou adicione
"meysampg/intldate" : " * " para a seção requisito do seu arquivo composer.json .
Também facilmente você pode baixá -lo e usá -lo.
Depois que a biblioteca estiver instalada, basta usá -la no seu arquivo php:
use meysampg intldate IntlDateTrait ;e use -o na aula desejada:
<?php
namespace foo bar ;
use meysampg intldate IntlDateTrait ;
class Bar
{
use IntlDateTrait;
// Some codes are here!
echo $ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toPersian ( ' en ' )-> asDateTime ();
} IntlDateTrait has a simple logic for naming methods: "A date starts from origin and ends to final . So all methods (setters and getters) that are related to incoming date are named by setOriginXXXX and getOriginXXXX (which XXXX shows a feature of time, like timezone or locale ) and all methods that are corresponded to outgoing date are regarded as setFinalXXXX and getFinalXXXX Uma lista de métodos disponíveis pode ser encontrada no fundo deste documento.
No começo, devo observar que a data de entrada deve ser uma matriz nesta forma:
[
year, // 2016
month, // 2
day, // 23
hour, // 12
minute, // 23
second // 4
] Atualmente, a biblioteca não pode analisar uma string como tempo (consulte a seção TODO); portanto, antes de converter uma data, você deve analisá -la em uma matriz aceitável (isso pode ser feito com preg_match ou cada ferramenta que você conhece). Agora você pode usar facilmente IntlDateTrait::from($datetimeArray, $locale, $calendar) para importar uma data de entrada e IntlDateTrait::to($locale, $calendar) para convertê -lo em outro sistema. Descobrimos cerca de $datetimeArray na primeira desta seção, é a nossa data para converter em um formato aceito. $locale é a informação regional de um idioma. Por exemplo, para o inglês , é en , para farsi é fa , para espanhol é es e assim por diante. Você pode encontrar uma lista completa deles neste link. E, finalmente, o calendário é o sistema de data desejado. Esta biblioteca usa a família Intl* php e, portanto, você pode usar todo o calendário suportado no projeto ICU . Agora, esses calendários são suportados:
É melhor usar o manipulador no código em vez de usar o nome direto. Esses manipuladores são:
// Use them in `self::$CAL_CALENDAR, for example `$calendar = self::$CAL_HEBREW`.
$ CAL_PERSIAN
$ CAL_JAPANESE
$ CAL_BUDDHIST
$ CAL_CHINESE
$ CAL_INDIAN
$ CAL_ISLAMIC
$ CAL_HEBREW
$ CAL_COPTIC
$ CAL_ETHIOPIC
$ CAL_GREGORIAN Existem algumas taquigrafadas para converter datas de uma maneira indolor (sim! Com todos os meus orgulhosos, sou um homem preguiçoso : D). Esse abreviação é formatado como fromYyyy() para a função de data de entrada e toZzzz() para a função de data de saída, de modo que Yyyy e Zzzz são o nome dos calendários. Para a função de entrada, a assinatura é fromYyyy($datetimeArray, $locale = 'en_US', $timezone = 'UTC) e para saída é toZzzz($locale = 'fa', $timezone = 'UTC') . Use $locale na função de entrada Se você tiver dígitos que não sejam de latina e use-o na função de saída, se você quiser mostrar a data convertida por dígitos latinos (com base na região do calendário, $locales são definidos, por exemplo, a localização padrão do calendário Persian para função de saída é fa ). Além disso, com a alteração $timezone nas funções fromYyyy e ToZzzz , você pode converter um DateTime de um para o outro. As abreviação estão listadas na tabela.
| Entrada | Extrovertido |
|---|---|
| Frompersian | Topersian |
| Fromjapanese | Tojapanese |
| Frombuddhist | Tobuddhist |
| de Chinese | Tochinês |
| From Indian | Toindian |
| Fromislâmico | Toislâmico |
| Fromhebrew | Tohebrew |
| FromCoptic | Tocoptic |
| Frometiopic | Toetiopic |
| Fromgorian | Togregorian |
Existem duas funções para mostrar datas convertidas. O primeiro é asDateTime e o último é asTimestamp .
A assinatura do asDateTime é asDateTime($pattern = 'yyyy/MM/dd, HH:mm:ss') . Esta função aceita um formato aceitável ICU . Você pode encontrar mais informações deste link. Além disso, é uma boa ideia implementar uma função que analisa o formato tradicional do PHP -aceitável (consulte a seção date ).
A função asTimestamp retorna a época do UNIX, número inteiro positivo para o tempo depois disso e o número inteiro negativo antes disso.
Existem alguns exemplos para o uso de IntlDateTrait . Eu acho que eles são necessários e suficientes.
$ this -> fromTimestamp ( 1504770825 )-> toPersian ( ' en ' )-> asDateTime ();
// '1396/06/16, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toPersian ( ' en ' )-> asDateTime ();
// '1396/06/16, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toPersian ()-> asDateTime ();
// '۱۳۹۶/۰۶/۱۶, ۰۷:۵۳:۴۵'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toJapanese ()-> asDateTime ();
// '0029/09/07, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toIslamic ()-> asDateTime ();
// '١٤٣٨/١٢/١٧, ٠٧:٥٣:٤٥'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toBuddhist ()-> asDateTime ();
// '2560/09/07, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toChinese ()-> asDateTime ();
// '0034/07/17, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toIndian ()-> asDateTime ();
// '1939/06/16, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toHebrew ()-> asDateTime ();
// 'תשע״ז/י״ב/ט״ז, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toCoptic ()-> asDateTime ();
// '1733/13/02, 07:53:45'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> toEthiopic ()-> asDateTime ();
// '2009/13/02, 07:53:45'
$ this -> fromPersian ([ 1396 , 6 , 16 , 12 , 23 , 45 ])-> toIslamic ()-> asDateTime ();
// '١٤٣٨/١٢/١٧, ٠٧:٥٣:٤٥'
$ this -> fromPersian ([ 1396 , 6 , 16 , 12 , 23 , 45 ])-> toGregorian ()-> asDateTime ();
// '2017/09/07, 07:53:45'
$ this -> fromPersian ([ 1396 , 6 , 16 , 12 , 23 , 45 ])-> toGregorian ()-> setFinalTimeZone ( ' Asia/Tehran ' )-> asDateTime ();
// '2017/09/07, 12:23:45'
$ this -> fromPersian ([ 1396 , 6 , 16 , 12 , 23 , 45 ])-> toGregorian ()-> setFinalTimeZone ( ' Asia/Tehran ' )-> asDateTime ( ' yyyy ' );
// '2017'
$ this -> fromGregorian ([ 2017 , 9 , 7 , 12 , 23 , 45 ])-> asTimestamp ();
// '1504770825'
$ this -> fromPersian ([ 1396 , 6 , 16 , 12 , 23 , 45 ])-> asTimestamp ();
// '1504770825' Existem alguns métodos que ajudam a controlar mais sobre o processo de conversão. Acabei de listá -los nesta seção. Eu acho que seu nome reclamou seus usos, se não for, por favor, escreva o documento para eles: d.
| Setters | Gettes |
|---|---|
setOriginDate($datetimeArray) | getFinalDate() |
setFromLocale($locale) | getFromLocale() |
setFromCalendar($calendar) | getFromCalendar() |
setToLocale($locale) | getToLocale() |
setToCalendar($calendar) | getToCalendar() |
getFromLocaleAndCalendar() | getToLocaleAndCalendar() |
setOriginTimeZone($timezone) | getOriginTimeZone() |
setFinalTimeZone($timezone) | getFinalTimeZone() |
setOriginCalendar($locale) | getOriginCalendar() |
setFinalCalendar($locale) | getFinalCalendar() |
setFinalDateType($datetype) | getFinalDateType() |
setFinalTimeType($timetype) | getFinalTimeType() |
setFinalCalendarType($calendarType) | getFinalCalendarType() |
setFinalPattern($pattern) | getFinalPattern() |
setIntlDateFormatter($locale = "en_US", $datetype = IntlDateFormatter::FULL, $timetype = IntlDateFormatter::FULL, $timezone = 'UTC', $calendar = IntlDateFormatter::GREGORIAN, $pattern = 'yyyy/MM/dd HH:mm:ss') | getIntlDateFormatter() |
setIntlCalendar($timezone = 'Asia/Tehran', $locale = 'fa_IR@calendar=persian') | getIntlCalendar() |
parsePattern($pattern) . /**
* Implement a function to parse both ICU patterns and php date
* function patterns and return a pattern that is compatible on
* ICU format. The php pattern must start with php keyword, for
* example `php:Y-F-d, H:i:s` is a php pattern.
*/ Implementar o método guessDateTime($timestring) .
Escreva testes!
Apenas bifurque este repositório, faça sua modificação ou adição e envie uma solicitação de tração!