格式化时长
将时长格式化为可读的格式。灵感来自 humanizeDuration.js
安装和使用
将包添加到您的 pubspec
dependencies:
humanize_duration: any # or the latest version on Pub
用法
默认情况下,格式化时长会精确到毫秒。默认使用英语进行格式化。
humanizeDuration(const Duration(milliseconds: 3000)); // '3 seconds'
humanizeDuration(const Duration(milliseconds: 97320000)); // '1 day, 3 hours, 2 minutes'
选项和语言
语言
支持的语言:[阿拉伯语、法语、英语、西班牙语...] 要获取支持的语言列表,可以使用 getSupportedLanguages
getSupportedLanguages(); // [ar, en, fr, es, jp, gr, du, fa, ge, it, ko, pt, ru, tr, zh_cn, zh_tw]
humanizeDuration(
const Duration(milliseconds: 97320000),
language: const ArLanguage(),
);
// ١ يوم , ٣ ساعات
// OR get language by alpha
humanizeDuration(
const Duration(milliseconds: 97320000),
language: getLanguageByLocale('ar'),
);
添加自定义语言
首先需要实现 HumanizeLanguage 类。
import 'package:humanize_duration/humanize_duration.dart';
class EuLanguage implements HumanizeLanguage {
const EuLanguage();
@override
String name() => 'eu';
@override
String day(int value) => 'egun';
@override
String hour(int value) => 'ordu';
@override
String millisecond(int value) => 'milisegundo';
@override
String minute(int value) => 'minutu';
@override
String month(int value) => 'hilabete';
@override
String second(int value) => 'segundo';
@override
String week(int value) => 'aste';
@override
String year(int value) => 'hilabete';
}
分隔符
在上一单位和下一个值之间显示的字符串。
humanizeDuration(
const Duration(milliseconds: 97320000),
options: const HumanizeOptions(delimiter: ' -- '),
); // 1 day -- 3 hours -- 2 minutes
humanizeDuration(
const Duration(milliseconds: 22140000),
options: const HumanizeOptions(delimiter: ' and '),
); // 6 hours and 9 minutes
间隔符
在每个值和单位之间显示的字符串。
humanizeDuration(
const Duration(milliseconds: 22140000),
options: const HumanizeOptions(spacer: ' whole '),
); // 6 whole hours, 9 whole minutes
单位
可以是以下任何一个,或它们的组合:Units.year、Units.month、Units.week、Units.day、Units.hour、Units.minute、Units.second、Units.millisecond。
humanizeDuration(
const Duration(milliseconds: 3600000),
options: const HumanizeOptions(units: [Units.hour]),
); // 1 hour
humanizeDuration(
const Duration(milliseconds: 3600000),
options: const HumanizeOptions(units: [Units.minute]),
); // 60 minutes
humanizeDuration(
const Duration(milliseconds: 3600000),
options: const HumanizeOptions(units: [Units.day, Units.hour]),
); // 1 hour
连词
在最后一个单位之前包含的字符串。您还可以将 lastPrefixComma 设置为 false 以消除最后的逗号。
humanizeDuration(
const Duration(milliseconds: 22140000),
options: const HumanizeOptions(conjunction: ' and '),
); // 6 hours and 9 minutes
humanizeDuration(
const Duration(milliseconds: 22141000),
options: const HumanizeOptions(conjunction: ' and '),
); // 6 hours, 9 minutes and 1 second
humanizeDuration(
const Duration(milliseconds: 22141000),
options: const HumanizeOptions(
conjunction: ' and ',
lastPrefixComma: true,
),
); // 6 hours, 9 minutes, and 1 second