【问题标题】:Subtract month returning 3 digit day ( for example: 347/12/2019) in dart在 dart 中减去返回 3 位数日期的月份(例如:347/12/2019)
【发布时间】:2020-01-13 05:23:10
【问题描述】:

如果我尝试使用提到的代码获取上个月的日期,我会得到像 347/12/2019 这样的日期,而不是 13/12/2019 p>

  DateTime _startDate = DateTime.now();
  DateTime _endDate = DateTime.now().add(Duration(days: 7));
  DateTime Date=DateTime.now();

  Future datePicker(BuildContext context) async {

    final List<DateTime> picked = await DateRagePicker.showDatePicker(
        context: context,
        initialFirstDate: _startDate,
        initialLastDate: _endDate,
        firstDate: new DateTime(DateTime.now().year - 50),
        lastDate: new DateTime(DateTime.now().year + 50),
    );
    if (picked != null && picked.length == 2) {
      setState(() {
        _startDate = picked[0];
        _endDate = picked[1];
      });
    }

  }
onTap: (){
 setState(() {
    _startDate=new DateTime(Date.year, Date.month - 1, Date.day);
    _endDate=DateTime.now();
    Navigator.pop(context);
});
}

SRC URL

【问题讨论】:

  • 这能回答你的问题吗? Get Last Month Date In Flutter / Dart
  • @Gokul Sundaramoorthy,你到底想做什么?
  • @AdamStrauss 是的,尝试过这种方法,对于这种方法,我也得到了相同的输出
  • @sudo_kaizen 我正在研究 DateRangePicker,在这个屏幕上我放置了选择过去 30 天数据的选项,因为我正在使用上述代码检索startingDate。
  • 对我来说DateTime date=DateTime.now(); DateTime _startDate=new DateTime(date.year, date.month - 1, date.day); 工作正常。请在此处提供您的完整代码,以便理解问题

标签: flutter dart


【解决方案1】:

您所做的一切都是正确的,但需要在 setState() 中进行一些小调整。替换你的 setState 如下。

setState(() {
     _startDate=new DateTime(_startDate.year, _startDate.month - 1, _startDate.day);
    _endDate=DateTime.now();
    Navigator.pop(context);
});

在这里查看要点https://gist.github.com/ragu-swaminathan/4c2dd2f49f585397e67143d34707f7cb

【讨论】:

  • 您是否得到相同的 3 位数日期?以上 sn-p 将正常工作。请在此处查看要点:gist.github.com/ragu-swaminathan/…
  • 是的,我仍然得到 3 位日期,在控制台中它返回正确的日期,如果我在 Any Widget 中显示该值,我得到 3 位日期
  • @GokulSundaramoorthy 也许是因为你没有遵循关于命名变量的 dart 约定,你使用了 upperCamelCase 而不是 lowerCamelCase。只是说
  • @FederickJonathan 我认为这可能不是问题?
  • @GokulSundaramoorthy 分享你用过的插件
【解决方案2】:

如果您想要获取今天月份的前一个月,这可以正常工作

  DateTime now = DateTime.now();
  DateTime pastMonthFromNow = DateTime(now.year, now.month-1, now.day);
  print(pastMonthFromNow);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-01
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2016-11-08
    相关资源
    最近更新 更多