74 lines
1.6 KiB
Dart

class TimeUtils {
/// 年
static List calcYears({int begin = 1900, int end = 2100}) =>
_calcCount(begin, end);
/// 月
static List calcMonth({int begin = 1, int end = 12}) {
begin = begin < 1 ? 1 : begin;
end = end > 12 ? 12 : end;
return _calcCount(begin, end);
}
/// 日
static List calcDay(int year, int month, {int begin = 1, int end = 31}) {
begin = begin < 1 ? 1 : begin;
int days = _calcDateCount(year, month);
if (end > days) {
end = days;
}
return _calcCount(begin, end);
}
/// 时
static List calcHour({int begin = 0, int end = 23}) {
begin = begin < 0 ? 0 : begin;
end = end > 23 ? 23 : end;
return _calcCount(begin, end);
}
/// 分 和 秒
static List calcMinAndSecond({int begin = 0, int end = 59}) {
begin = begin < 0 ? 0 : begin;
end = end > 59 ? 59 : end;
return _calcCount(begin, end);
}
static List _calcCount(begin, end) {
int length = end - begin + 1;
if (length == 0) return [begin];
if (length < 0) return [];
return List.generate(length, (index) => begin + index);
}
// 计算月份所对应天数
static int _calcDateCount(int year, int month) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 29;
}
return 28;
}
return 30;
}
String intToStr(int v) {
return (v < 10) ? "0$v" : "$v";
}
// String _checkStr(String v) {
// return v == null ? "" : v;
// }
}