?
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具有命名方法的簡單邏輯:“一個日期從來源開始到結束。因此,與傳入日期相關的所有方法(seters and getters)均由setOriginXXXX命名和getOriginXXXX命名( XXXX顯示了時間的特徵,如timezone or locale and timezone or at setfectinal and get sotef setfections at extfients neckinals get Fequinal neckinal neckinals get 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') 。如果您想通過拉丁字數字顯示轉換的日期(基於日曆, $locales定義了$ convented日期Persian則在傳入功能中使用$locale ,並在傳出功能上使用fa 。同樣,隨著fromYyyy和ToZzzz功能中的$timezone ,您可以將DateTime從一個轉換為另一個。速記在表中列出。
| 傳入 | 向外 |
|---|---|
| 來自珀斯人 | 高層人士 |
| 從日本 | Tojapanese |
| 來自博客 | tobuddhist |
| 源自Chinese | tochinese |
| 從印第安人 | Toindian |
| 伊斯蘭教 | toislamic |
| 來自Hebrew | 托堡 |
| 源 | 巨型 |
| 來自義工 | toethiopic |
| Fromgregorian | togregorian |
有兩個用於顯示轉換日期的函數。第一個是asDateTime ,最後一個是asTimestamp 。
asDateTime的簽名為asDateTime($pattern = 'yyyy/MM/dd, HH:mm:ss') 。此函數接受ICU可接受的格式。您可以從此鏈接中找到更多信息。同樣,實施一個可以解析傳統PHP date的函數的好主意(請參閱TODO部分)。
asTimestamp函數返回UNIX時期,此後時間的正整數以及在此之前的負整數。
有一些使用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)方法。
寫測試!
僅分配此存儲庫,進行修改或添加,然後發送拉動請求!