数字革命 / intl
数字革命国际化库
v1.6.0
2023-09-29 12:29 UTC
Requires
- php: >=8.1
- ext-intl: *
- giggsey/libphonenumber-for-php-lite: ^8.13.11
- moneyphp/money: ^3.3 || ^4.0
Requires (Dev)
- digitalrevolution/accessorpair-constraint: 2.1.7
- digitalrevolution/phpunit-file-coverage-inspection: ^v1.0
- phpmd/phpmd: @stable
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.4
- phpstan/phpstan-phpunit: ^1.0
- phpstan/phpstan-strict-rules: ^1.1
- phpunit/phpunit: ^9.5
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-16 11:32:02 UTC
README
数字革命国际化
库,用于根据地区格式化数字、日期、货币对象和货币为字符串。
入门
composer require digitalrevolution/intl
使用方法
NumberFormatService
格式化数字和货币
use DR\Internationalization\Currency\CurrencyFormatOptions; use DR\Internationalization\Number\NumberFormatOptions; use DR\Internationalization\NumberFormatService; use Money\Money; // set default configuration $currencyOptions = (new CurrencyFormatOptions()) ->setLocale('nl_NL') ->setCurrencyCode('EUR') ->setGrouping(false); $numberOptions = (new NumberFormatOptions()) ->setLocale('nl_NL') ->setDecimals(2) ->setTrimDecimals(true); $service = new NumberFormatService($currencyOptions, $numberOptions);
格式化货币
$service->currency(1500.5); // output: € 1500,50 $service->currency(new Money('150050', new Currency('EUR'))); // output: € 1500,50 $service->currency(1500.5, (new CurrencyFormatOptions())->setGrouping(true)); // output: € 1.500,50
格式化数字
$service->number(1500.5); // output: 1500,50 $service->number(1500.5, (new NumberFormatOptions())->setGrouping(true)); // output: 1.500,50 $service->number(1500.0, (new NumberFormatOptions())->setTrimDecimals(NumberFormatOptions::TRIM_DECIMAL_ALL_OR_NOTHING)); // output: 1500 $service->number(1500.5, (new NumberFormatOptions())->setTrimDecimals(NumberFormatOptions::TRIM_DECIMAL_ALL_OR_NOTHING)); // output: 1500.50 $service->number(1500.5, (new NumberFormatOptions())->setTrimDecimals(NumberFormatOptions::TRIM_DECIMAL_ANY)); // output: 1500.5
NumberParser
解析字符串中的浮点数字,确定用户输入的千位和十位分隔符。
NumberParser::parseFloat('1050'); // output: 1050.0 NumberParser::parseFloat('1050.5'); // output: 1050.5 NumberParser::parseFloat('1050,5'); // output: 1050.5 NumberParser::parseFloat('1.050,5'); // output: 1050.5 NumberParser::parseFloat('1,050.5'); // output: 1050.5 NumberParser::parseFloat('1,000,050.5'); // output: 1000050.5
DateFormatService
格式化日期和时间。输入可以是时间戳、字符串(兼容 strtotime)和 DateTimeInterface 对象
$dateFormatter = new DateFormatService('nl_NL', date_default_timezone_get()); $dateFormatter->format(time(), 'eeee dd LLLL Y - HH:mm:ss'); // example output: zaterdag 02 juni 2040 - 05:57:02 $dateFormatter->format('next saturday', 'eeee dd LLLL Y - HH:mm:ss'); // example output: zaterdag 02 juni 2040 - 05:57:02 $dateFormatter->format(new DateTime(), 'eeee dd LLLL Y - HH:mm:ss'); // example output: zaterdag 02 juni 2040 - 05:57:02
DayOfTheWeekFormatter
将 PHP 日期的星期格式化为字符串
$formatter = new DayOfTheWeekFormatter('nl_NL'); $formatter->format(DayOfTheWeekFormatter::MONDAY); // output: maandag $formatter->format(DayOfTheWeekFormatter::MONDAY, 'en_US'); // output: Monday
PhoneNumberFormatService
格式化电话号码
use DR\Internationalization\PhoneNumber\PhoneNumberFormatOptions; use DR\Internationalization\PhoneNumberFormatService; // set default configuration $phoneNumberOptions = (new PhoneNumberFormatOptions()) ->setDefaultCountryCode('NL') ->setFormat(PhoneNumberFormatOptions::FORMAT_INTERNATIONAL_DIAL); $service = new PhoneNumberFormatService($phoneNumberOptions); $service->format("+31612345678"); // output: 0031612345678 $service->format("0612345678"); // output: 0031612345678
PhoneNumberParseService
use DR\Internationalization\PhoneNumberParseService; $parseService = new PhoneNumberParseService("NL"); $parsedPhoneNumber = $parseService->parse("+31612345678");
项目结构
开发
运行代码质量检查
composer run check
运行单元测试
composer run test
关于我们
在 123inkt(数字革命 B.V. 的部分),每天有超过 50 名开发专业人士在改进我们的内部 ERP 和我们的几家商店。你想加入我们吗? 我们正在寻找开发者。