获取最近七天的日期

本文关键字:日期 七天 最近 获取 | 更新日期: 2023-09-27 18:14:38

我想从现在开始得到最近七天的日期。例如,当前日期为

02-10-2016,得到像这样的七天日期

01-10-2016,30-09-2016,29-09-2016,28-09-2016,27-09-2016,26-09-2016

我的代码
string dt = DateTime.Now.ToString("yyyy-MM-dd");
DateTime lastWeek = dt.AddDays(-7.0);

获取最近七天的日期

AddDaysDateTime的一部分,而不是string的一部分。
您需要迭代地构建日期,然后将其转换为字符串。

DateTime[] last7Days = Enumerable.Range(0, 7)
    .Select(i => DateTime.Now.Date.AddDays(-i))
    .ToArray();
foreach (var day in last7Days)
    Console.WriteLine($"{day:yyyy-MM-dd}"); // Any manipulations with days go here

不使用LINQ,使用一个简单的循环:

DateTime dt = DateTime.Now;
for (int i=0;i<7;i++)
{
      dt = dt.AddDays(-1);
      Console.WriteLine(dt.Date.ToShortDateString());
}

尝试使用Linq:

  var date = new DateTime(2016, 10, 2);
  var result = Enumerable.Range(1, 7)
    .Select(day => date.Date.AddDays(- day))
    .ToArray(); // if you want to represent dates as an array

测试
  // 01-10-2016,30-09-2016,29-09-2016,28-09-2016,27-09-2016,26-09-2016,25-09-2016
  Console.Write(string.Join(",", result.Select(d => d.ToString("dd-MM-yyyy"))));

差不多完成了,AddDays方法将只向给定数据添加特定天数,并向您显示结果日期。但是在这里,你需要一个日期列表,所以你必须遍历这些日期并获取它们。我希望下面的方法能帮助你做到这一点:

 public static string GetLast7DateString()
 {
     DateTime currentDate = DateTime.Now;
     return String.Join(",",Enumerable.Range(0, 7)
                                      .Select(x => currentDate.AddDays(-x).ToString("dd-MM-yyyy"))
                                      .ToList());
 }

注意:如果你想要排除当前日期意味着你必须从7中取出范围,计数应该是7。你可以在这里阅读更多关于Enumerable.Range的信息

如果你像下面这样调用这个方法意味着你将得到24-10-2016,23-10-2016,22-10-2016,21-10-2016,20-10-2016,19-10-2016,18-10-2016

的输出
 string opLast7Days = GetLast7DateString();
 public static List<DateTime> getLastSevenDate(DateTime currentDate)
        {
            List<DateTime> lastSevenDate = new List<DateTime>();
            for (int i = 1; i <= 7; i++)
            {
                lastSevenDate.Add(currentDate.AddDays(-i));
            }
            return lastSevenDate;
        }