stigwue/happrox

数字和持续时间的近似表示。

v0.1.1 2018-09-06 11:00 UTC

This package is auto-updated.

Last update: 2024-09-29 05:21:15 UTC


README

数字和持续时间的近似表示。例如,将 98,760 表示为 98.7k,将 3,599s 表示为 58m 59s,就像在 Stackoverflow 时间戳和 Twitter 状态计数中那样。

安装

安装通过 composer 完成。

composer require stigwue/happrox

用法

需要配置的只有几个参数:数字的小数位数、日期时间的格式化以及使用直接日期时间格式之前的最大持续时间。在大多数情况下,默认值就足够了。

此外,要近似数字,只需提供 。对于持续时间,提供 秒数 即可。可以编写自定义函数将其他日期时间格式转换为秒。

请注意,当提供的持续时间超过设置的近似最大持续时间时,提供的持续时间将被视为 UNIX 时间戳并相应地格式化。如果这不符合您的需求,应使用适当的持续时间设置 Happrox::setDurationBase() 来更正日期时间(默认值为 0)。

require_once(__DIR__ . '/happrox.php');

//set time zone, no where like home
date_default_timezone_set('Africa/Lagos');

$obj = new Happrox();

echo "Numbers\n";

$happrox = Happrox::number($obj, 10);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::number($obj, 1010);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::number($obj, 123456);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::number($obj, 1010101);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::number($obj, 12345678);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::number($obj, 101010101010);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";

Happrox::setDurationBase($obj, time(NULL));

echo "Durations\n";

$happrox = Happrox::duration($obj, 36);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::duration($obj, 3599);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::duration($obj, 518400);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::duration($obj, 604799);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
$happrox = Happrox::duration($obj, 123456);
echo $happrox['value'] . ' -> ' . $happrox['happrox'] . "\n";
Numbers
10 -> 10
1010 -> 1.0k
123456 -> 123.5k
1010101 -> 1.0M
12345678 -> 12.3M
101010101010 -> 101.0B
Durations
36 -> 36s
3599 -> 59m 59s
518400 -> 6d
604799 -> Jul 22, 2018 7:32am
123456 -> 1d 10hr

待办事项

  • 处理印度风格的数字近似(lakh)?

  • 引入开关以格式化本地工作日(市场日)的持续时间。需要一个有序日期数组以及特定日期的分配(1970年1月1日应该可以)。