?
날짜를 여러 달력으로 변환하기위한 PHP 라이브러리
이 확장을 설치하는 선호하는 방법은 작곡가를 통하는 것입니다.
어느 쪽이든
composer require --prefer-dist meysampg/intldate " * "또는 추가
"meysampg/intldate" : " * " composer.json 파일의 요구 섹션에
또한 쉽게 다운로드하여 사용할 수 있습니다.
라이브러리가 설치되면 PHP 파일에 사용하기 만하면됩니다.
use meysampg intldate IntlDateTrait ;원하는 수업에서 사용하십시오.
<?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 이름 지정 방법에 대한 간단한 논리를 가지고 있습니다. "날짜는 원산지 에서 끝까지 시작하여 최종 끝까지 시작합니다. 따라서 들어오는 날짜와 관련된 모든 방법 (세터 및 getter)은 setOriginXXXX 및 getOriginXXXX ( XXXX Timezone 또는 Locale 과 같은 시간의 특징을 나타내는)에 의해 명명되며 외향 날짜에 대응하는 모든 메소드는 setFinalXXXX getFinalXXXX 고려합니다. 사용 가능한 메소드 목록은이 문서의 맨 아래에서 찾을 수 있습니다.
처음에는 들어오는 날짜 가이 형식의 배열이어야한다는 점에 유의해야합니다.
[
year, // 2016
month, // 2
day, // 23
hour, // 12
minute, // 23
second // 4
] 현재 라이브러리는 문자열을 시간으로 구문 분석 할 수 없으므로 (TODO 섹션 참조) 날짜를 변환하기 전에 허용 가능한 배열에서 구문 분석 해야합니다 ( preg_match 또는 알고있는 각 도구로 수행 할 수 있음). 이제 IntlDateTrait::from($datetimeArray, $locale, $calendar) 을 수신 날짜와 IntlDateTrait::to($locale, $calendar) 를 다른 시스템으로 변환 할 수 있습니다. 우리는이 섹션의 첫 번째 섹션에서 $datetimeArray 에 대해 약화했습니다. 허용 형식으로 변환하는 날짜입니다. $locale 언어의 지역 정보입니다. 예를 들어, 영어 의 en , 그것은 farsi 의 경우 fa , 스페인어는 es 등입니다. 이 링크에서 전체 목록을 찾을 수 있습니다. 그리고 마지막으로 캘린더는 원하는 날짜 시스템입니다. 이 라이브러리는 php 의 Intl* 제품군을 사용하므로 ICU 프로젝트에서 지원되는 모든 캘린더를 사용할 수 있습니다. 이제이 캘린더가 지원됩니다.
직접 이름을 사용하는 대신 핸들러를 코드로 사용하는 것이 좋습니다. 이 핸들러는 다음과 같습니다.
// 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 날짜를 고통없는 방식으로 전환하기위한 속기가 있습니다 (예! 내 자랑스러운 모든 사람과 함께, 나는 게으른 사람입니다 : D). 이 속기는 들어오는 날짜 함수의 경우 fromYyyy() toZzzz() , 나가는 날짜 함수의 경우 Yyyy 와 Zzzz 캘린더의 이름이되도록 형식화됩니다. 들어오는 기능의 경우 서명은 fromYyyy($datetimeArray, $locale = 'en_US', $timezone = 'UTC) 이고 나가는 것은 toZzzz($locale = 'fa', $timezone = 'UTC') 입니다. 라틴계 숫자가 아닌 기능에서 $locale 사용하여 라틴어 숫자로 변환 된 날짜를 표시하려면 (달력 영역에 따라, $locales 정의됩니다. 예를 들어, 나가는 기능에 대한 Persian 일정의 기본 위치는 fa ). 또한 fromYyyy 및 ToZzzz 기능 모두에서 $timezone 변경하면 DateTime을 서로 변환 할 수 있습니다. 속기는 표에 나열되어 있습니다.
| 들어오는 | 나가는 |
|---|---|
| Persian | 토퍼 시안 |
| 일본에서 | 토절 |
| Buddhist에서 | Tobuddhist |
| Chinese에서 | 토치 |
| Fromindian | Toindian |
| 이슬람에서 | 도 이슬람 |
| Hebrew에서 | 토 헤브리 |
| Coptic에서 | 토코틱 |
| 에코 티오에서 | 에코 티오 |
| Gregorian에서 | Togrogorian |
변환 날짜를 보여주기위한 두 가지 기능이 있습니다. 첫 번째는 asDateTime 이고 마지막은 asTimestamp 입니다.
asDateTime 의 시그니처는 asDateTime($pattern = 'yyyy/MM/dd, HH:mm:ss') . 이 기능은 ICU 허용 가능한 형식을 허용합니다. 이 링크에서 추가 정보를 찾을 수 있습니다. 또한 전통적인 PHP date -허용 가능한 형식을 구문 분석하는 함수를 구현하는 것이 좋습니다 (TODO 섹션 참조).
asTimestamp 함수는 Unix Epoch, 그 후 시간 동안 양의 정수, 그리고 그 전에 음의 정수를 반환합니다.
IntlDateTrait 사용하는 몇 가지 예가 있습니다. 나는 그들이 필요하고 충분하다고 생각합니다.
$ 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' 전환 프로세스에 더 많은 것을 제어하는 데 도움이되는 몇 가지 방법이 있습니다. 이 섹션에 나열합니다. 나는 그 이름이 그들의 사용법을 불평한다고 생각합니다. 그렇지 않은 경우 문서를 작성하십시오. d.
| 세터 | 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.
*/ guessDateTime($timestring) 메소드를 구현하십시오.
테스트를 작성하십시오!
이 저장소를 포크하고 수정 또는 추가를 수행하고 풀 요청을 보내십시오!