dart 如何找到每月的最后一天?

des4xlb0  于 2023-02-14  发布在  其他
关注(0)|答案(7)|浏览(265)

我正在尝试新的谷歌 dart 语言,我不知道如何获得当前月份的最后一天?
这将显示当前日期:

var now = new DateTime.now();
2izufjch

2izufjch1#

如果为下个月的日值提供零,则会得到上个月的最后一天

var date = new DateTime(2013,3,0);
print(date.day);  // 28 for February
dy2hfwbg

dy2hfwbg2#

如果要获取当月的最后一天,则需要参考下个月的0日
用一种简单的方法试试这个:

DateTime now = DateTime.now();
int lastday = DateTime(now.year, now.month + 1, 0).day;
eimct9ow

eimct9ow3#

这里有一种方法可以找到它:

var now = new DateTime.now();

// Find the last day of the month.
var beginningNextMonth = (now.month < 12) ? new DateTime(now.year, now.month + 1, 1) : new DateTime(now.year + 1, 1, 1);
var lastDay = beginningNextMonth.subtract(new Duration(days: 1)).day;

print(lastDay); // 28 for February

我有当前日期,所以我构造下个月的第一天,然后从中减去一天,我还考虑了年份的变化。

**更新:**下面是一段简短的代码,但灵感来自Chris的零技巧:

var now = new DateTime.now();

// Find the last day of the month.
var lastDayDateTime = (now.month < 12) ? new DateTime(now.year, now.month + 1, 0) : new DateTime(now.year + 1, 1, 0);

print(lastDayDateTime.day); // 28 for February

如果您想通过编程方式执行此操作(例如,您将特定月份作为整数),则它具有额外的check/code。

cu6pst1q

cu6pst1q4#

这里有一个扩展,可能会有所帮助(参考Kai和Chris的回答)。

extension DateTimeExtension on DateTime {

  DateTime get firstDayOfWeek => subtract(Duration(days: weekday - 1));

  DateTime get lastDayOfWeek =>
      add(Duration(days: DateTime.daysPerWeek - weekday));

  DateTime get lastDayOfMonth =>
      month < 12 ? DateTime(year, month + 1, 0) : DateTime(year + 1, 1, 0);
}
7bsow1i6

7bsow1i65#

另一种方法是使用Jiffy,它有endOf方法,可以很容易地得到几个单位的最后时刻,在本例中是月份:

Jiffy().endOf(Units.MONTH);
b1uwtaje

b1uwtaje6#

  • 虽然所有这些答案都是正确的,并给你最后的一个月:*

如下所示:year-month-lastDay 00:00:00.000-〉* 该月最后一天的开始 *
您可能需要该月的最后一个绑定/DateTime
如下所示:year-month-lastDay 23:59:59.999-〉* 月末 *
下面是如何在extension on DateTime的帮助下在一个月内获得两个边界:

extension MonthsBounds on DateTime {

  DateTime get lastMillisecondOfMonth =>
      month < 12 ? DateTime(year, month + 1, 1, 00, 00, 00, -1) : DateTime(year + 1, 1, 1, 00, 00, 00, -1);
  
  DateTime get firstMillisecondOfMonth => DateTime(year, month, 1);
}
print('${DateTime(2022, 12, 14).lastMillisecondOfMonth}'); // 2022-12-31 23:59:59.999
sf6xfgos

sf6xfgos7#

DateTime first = DateTime(month.value.year, month.value.month, 1);
  DateTime end = Jiffy(first).add(months: 1, days: -1).dateTime;

相关问题