?
Biblioteca PHP para convertir la fecha en calendarios múltiples
La forma preferida de instalar esta extensión es a través del compositor.
O CORRE
composer require --prefer-dist meysampg/intldate " * "o agregar
"meysampg/intldate" : " * " a la sección Requerir su archivo composer.json .
También fácilmente puede descargarlo y usarlo.
Una vez que se instala la biblioteca, simplemente úsela en su archivo PHP:
use meysampg intldate IntlDateTrait ;y úsalo en tu clase deseada:
<?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 tiene una lógica simple para los métodos de nombres: "Una fecha comienza desde el origen y los extremos hasta finales . Por lo tanto, todos los métodos (setters y getters ) que están relacionados con la fecha entrante están nombrados por setOriginXXXX y getOriginXXXX getFinalXXXX que XXXX setFinalXXXX de los métodos disponibles se pueden encontrar en la parte inferior de este documento.
Al principio debo tener en cuenta que la fecha entrante debe ser una matriz en este formulario:
[
year, // 2016
month, // 2
day, // 23
hour, // 12
minute, // 23
second // 4
] Actualmente, la biblioteca no puede analizar una cadena como tiempo (ver la sección TODO), por lo que antes de convertir una fecha, debe analizarla en una matriz aceptable (se puede hacer con preg_match o cada herramientas que conozca). Ahora puede usar fácilmente IntlDateTrait::from($datetimeArray, $locale, $calendar) para importar una fecha entrante e IntlDateTrait::to($locale, $calendar) para convertirlo en otro sistema. Discutimos alrededor de $datetimeArray en la primera de esta sección, es nuestra fecha para convertir en un formato aceptado. $locale es la información regional de un idioma. Por ejemplo, para los ingleses en , para farsi es fa , para español es es , etc. Puede encontrar una lista completa de ellos en este enlace. Y finalmente el calendario es su sistema de fecha deseado. Esta biblioteca usa la familia Intl* de php y, por lo tanto, puede usar todo el calendario admitido en el proyecto ICU . Ahora estos calendarios son compatibles:
Es mejor usar su controlador en código en lugar de usar nombre directo. Estos manejadores son:
// 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 Hay algunos taquigrafía para convertir las fechas de una manera indolora (¡sí! Con todos mis orgullosos, soy un hombre perezoso : D). Estos taquigrafía están formateados como fromYyyy() para la función de fecha entrante y toZzzz() para la función de fecha saliente de tal manera que, Yyyy y Zzzz son el nombre de los calendarios. Para la función entrante, la firma es fromYyyy($datetimeArray, $locale = 'en_US', $timezone = 'UTC) y para la saliente es toZzzz($locale = 'fa', $timezone = 'UTC') . Use $locale en la función entrante si tiene dígitos no latinos y úselo en la función saliente, si desea mostrar la fecha convertida de dígitos latinos (según la región del calendario, se definen $locales , por ejemplo, la ubicación predeterminada del calendario Persian para la función saliente es fa ). También con el cambio de $timezone en las funciones fromYyyy y ToZzzz , puede convertir una fecha y hora de una a otra. Las taquigrafía se enumeran en la tabla.
| Entrante | Extrovertido |
|---|---|
| delpersiano | topersio |
| de japonés | tojaponés |
| de Buddhist | tobuddhista |
| de chinos | tochino |
| de indio | a la india |
| desde elislámico | toislámico |
| fromhebrew | tohebrew |
| de cópico | tocóptico |
| de ethiopic | téetiopic |
| Degregorian | togregador |
Hay dos funciones para mostrar fechas convertidas. El primero es asDateTime y el último es asTimestamp .
La firma de asDateTime es asDateTime($pattern = 'yyyy/MM/dd, HH:mm:ss') . Esta función acepta un formato aceptable ICU . Puede encontrar más información de este enlace. También es una buena idea para implementar una función que analice el formato tradicional date de PHP (ver la sección TODO).
La función asTimestamp devuelve la época Unix, el entero positivo para el tiempo después de eso y el entero negativo para antes.
Hay algunos ejemplos para usar IntlDateTrait . Creo que son necesarios y 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' Existen algunos métodos que ayudan a controlar más sobre el proceso de conversión. Solo los enumero en esta sección. Creo que su nombre se queja de sus usos, si no es así, escriba un documento para ellos: 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 el método guessDateTime($timestring) .
¡Escribe pruebas!
¡Solo desembolsan este repositorio, realice su modificación o adición y envíe una solicitud de extracción!