Flutter改造月份转换else if逻辑 实现越界循环不返回error
Dart实现月份数值循环映射法语月份名
实现思路
移除原代码中越界返回error的判断,通过模运算将任意整数入参归一化到1-12的有效月份区间,同时优化原代码冗余的多分支判断,用有序列表存储法语月份名,通过索引直接取值,降低后续维护成本。
核心归一化逻辑:
// 任意整数月份转换为1-12区间有效值 final normalizedMonth = ((month - 1) % 12) + 1;
该公式兼容所有整数入参:
- 大于12的数值会自动向后顺延,循环到后续年份的对应月份
- 小于1的数值会自动向前倒推,循环到之前年份的对应月份
完整可运行代码
String numericToStringMonth(int month) { const monthNames = [ 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre' ]; final normalizedMonth = ((month - 1) % 12) + 1; return monthNames[normalizedMonth - 1]; }
映射效果参考
- 入参
0:返回Décembre(1月往前1个月,对应上年12月) - 入参
-2:返回Octobre(1月往前3个月,对应上年10月) - 入参
13:返回Janvier(12月往后1个月,对应下年1月) - 入参
24:返回Décembre(12月往后12个月,对应后年12月)
内容的提问来源于stack exchange,提问作者weaked
相关产品推荐
相关产品推荐

