ops-console v1.0.2 (versionCode 8) 源码入库
This commit is contained in:
59
lib/utils/formatters.dart
Normal file
59
lib/utils/formatters.dart
Normal file
@@ -0,0 +1,59 @@
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
/// 通用格式化工具。
|
||||
class Formatters {
|
||||
Formatters._();
|
||||
|
||||
static final DateFormat _dateTimeFormat = DateFormat('yyyy-MM-dd HH:mm:ss');
|
||||
static final DateFormat _dateFormat = DateFormat('yyyy-MM-dd');
|
||||
|
||||
/// 格式化日期时间。
|
||||
static String formatDateTime(DateTime value) {
|
||||
return _dateTimeFormat.format(value);
|
||||
}
|
||||
|
||||
/// 仅格式化日期(YYYY-MM-DD),用于门店到期时间等只需日期的场景。
|
||||
static String formatDate(DateTime value) {
|
||||
return _dateFormat.format(value);
|
||||
}
|
||||
|
||||
/// 将百分比值格式化为带一位小数的字符串,如 `72.5%`。
|
||||
static String formatPercent(double ratio) {
|
||||
return '${(ratio * 100).toStringAsFixed(1)}%';
|
||||
}
|
||||
|
||||
/// 将字节数格式化为可读单位(KB/MB/GB/TB)。
|
||||
static String formatBytes(int bytes) {
|
||||
if (bytes < 1024) {
|
||||
return '$bytes B';
|
||||
}
|
||||
const units = ['KB', 'MB', 'GB', 'TB'];
|
||||
double value = bytes.toDouble();
|
||||
int unitIndex = -1;
|
||||
do {
|
||||
value /= 1024;
|
||||
unitIndex++;
|
||||
} while (value >= 1024 && unitIndex < units.length - 1);
|
||||
return '${value.toStringAsFixed(1)} ${units[unitIndex]}';
|
||||
}
|
||||
|
||||
/// 将秒数格式化为运行时长字符串,如 `3天 5小时 12分`。
|
||||
static String formatUptime(int seconds) {
|
||||
final duration = Duration(seconds: seconds);
|
||||
final days = duration.inDays;
|
||||
final hours = duration.inHours % 24;
|
||||
final minutes = duration.inMinutes % 60;
|
||||
|
||||
final parts = <String>[];
|
||||
if (days > 0) {
|
||||
parts.add('$days天');
|
||||
}
|
||||
if (hours > 0) {
|
||||
parts.add('$hours小时');
|
||||
}
|
||||
if (minutes > 0 || parts.isEmpty) {
|
||||
parts.add('$minutes分');
|
||||
}
|
||||
return parts.join(' ');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user