You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 12:40:39