如何在Flutter/Dart中生成从当前月份向前的12个月列表?
Flutter/Dart 自动生成指定范围的12个月列表
要生成从当前月份向前倒推11个月的12个月列表,完全不需要硬编码,利用Dart的DateTime类就能轻松实现,具体方案如下:
完整代码示例
void main() { // 锚定当前月份的第一天,避免日期溢出影响月份计算 final currentMonthFirstDay = DateTime(DateTime.now().year, DateTime.now().month, 1); List<String> monthList = []; // 循环生成12个月份(当前月 + 往前11个月) for (int i = 0; i < 12; i++) { // 计算目标月份的第一天 final targetMonth = DateTime(currentMonthFirstDay.year, currentMonthFirstDay.month - i, 1); // 格式化为"YYYY年MM月",月份补零保证两位格式 final formattedMonth = "${targetMonth.year}年${targetMonth.month.toString().padLeft(2, '0')}月"; monthList.add(formattedMonth); } // 输出结果验证 print(monthList); }
关键细节说明
- 锚定月份第一天:直接取当前月份的第一天而非当前日期,避免月底日期(如10月31日)减月份时出现的日期溢出问题(比如减1个月会变成9月30日,但我们只需要准确的月份信息)。
- 灵活调整格式:如果不需要字符串格式,而是要直接生成
DateTime对象列表,只需把循环内的逻辑改成直接添加targetMonth到列表即可:
List<DateTime> monthDateList = []; for (int i = 0; i < 12; i++) { final targetMonth = DateTime(currentMonthFirstDay.year, currentMonthFirstDay.month - i, 1); monthDateList.add(targetMonth); }
内容的提问来源于stack exchange,提问作者Bill Tertis
相关产品推荐
相关产品推荐

