【问题标题】:how to add weeks,month, year to a date in flutter如何在颤动中将周,月,年添加到日期
【发布时间】:2020-01-07 12:03:09
【问题描述】:

我在颤振中有一个日期字符串,我试图添加周、月和年,但不知道该怎么做。

在android java中,我们可以通过以下方式添加周、月、年

Calendar cal = Calendar.getInstance();
cal.setTime('2019-09-04');

cal.add(Calendar.WEEK_OF_MONTH,1);  // add one week
cal.add(Calendar.WEEK_OF_MONTH, 2 );  // add two weeks
cal.add(Calendar.MONTH, 1);  // add # of month
cal.add(Calendar.MONTH, 3);  // add 3 months
cal.add(Calendar.YEAR, 1);  // add 1 year

但是,我不知道如何在颤振中添加它。我知道我可以使用持续时间,但它只接受天数 cal.add(new Duration(days: 30)); 如果我使用持续时间,那么我需要计算出一个月、一周或一年中有多少天,这更多的是数学。在 android java 中使用上述代码,android 将采用周数、月数或年数。有没有办法让 Flutter 为日期添加周、月或年?

例如:如果我有 2019 年 1 月 31 日并且我想添加一个月,那么新日期应该是 2019 年 2 月 28 日。如果我想在 2019 年 2 月 28 日添加一个月,那么输出应该是 2019 年 3 月 31 日

数周乃至数年也是如此。如果指定,颤振应该在日期上添加一周或一年等等。提前致谢

【问题讨论】:

  • 也许你可以弄清楚时间规则,为它制作一个插件,或者考虑使用existed calandar plugin。根据我的经验,在 dart 中没有与 Calendar 等效的类。
  • 顺便说一句,Java 中可怕的 Calendar 类已被 JSR 310 中定义的现代 java.time 类取代多年,特别是 ZonedDateTimeLocalDate.parse( "2019-09-04" ).plusMonths( 3 ).plusWeeks( 2 )

标签: flutter


【解决方案1】:

您可以在这篇中等文章中找到所需的一切: Top 7 Date methods

假设你有 '2019-09-04',在 Dart 中你有:

var myDate = DateTime.parse("2019-09-04 20:18:04Z");
myDate.add(Duration(days: 10, hours: 5)));

然后打印出来:

print(myDate.toLocal());

编辑:

由于您在下面的评论,要添加年份或月份,请执行以下操作:

var date = new DateTime(2019, 9, 4);
var newDate = new DateTime(date.year + 1, date.month + 2, date.day);

你可以在这里找到类似的答案:Add/Substract months/years to date in dart?

【讨论】:

  • 嗨,马可,谢谢您的回复。但是,使用 Duration 我只能添加天数、小时数。如果我想增加几个月或几年怎么办?我将不得不转换为天数等。如何将月份添加到日期?还是年份?
  • date.month + 2 可能会将您推到下一年。构造函数是否正确?编辑:是的,它确实......很好。
猜你喜欢
  • 1970-01-01
  • 2014-09-08
  • 1970-01-01
  • 2019-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多