在.NET中以反向时间顺序获取日期

时间:2014-01-06 14:55:29

标签: c#

我想从今天起打印一组日期。 例如:如果今天是06年1月6日,CutOff值为10,则代码应该给我10天,直到28日 - 12月13日。

以下是我的尝试:

for (int i = 0; i < 10; i++)
            {
                string month = DateTime.Now.ToString("MMMMMMMM");
                int day = (int)DateTime.Now.AddDays(-i).Day;

                Console.WriteLine(day + " " + month);
            }

这给出了正确的日期,但每次都打印1月。

非常感谢任何线索。

感谢。

5 个答案:

答案 0 :(得分:1)

当然它确实......你只计算一个月中的某一天,你不会重新计算整个日期。

如果你说

DateTime olderDate = DateTime.Today.AddDays(-i);

然后您的oldDate将包含您正在寻找的正确日期。

答案 1 :(得分:1)

问题是你只是更新了一天,而不是日期(因此错过了一个月)。

这样的事情怎么样?

foreach (DateTime date in Enumerable.Range(0, 10)
    .Select(r => DateTime.Now.Date.AddDays(-r)))
{
    Console.WriteLine(date.Day + " " + date.Month);
}

答案 2 :(得分:1)

for (int i = 0; i < 10; i++)
{
  DateTime date = DateTime.Now.AddDays(-i);
  Console.WriteLine(String.Format("{0:d MMMM}",date));
}

答案 3 :(得分:0)

这是你的罪魁祸首:

string month = DateTime.Now.ToString("MMMMMMMM");

这将始终为您提供当前日期和月份的月份。时间。鉴于您在1月份运行代码,它始终输出1月份。如果你下个月运行代码,它将始终输出二月。

答案 4 :(得分:0)

for (int i = 0; i < 10; i++)
        {
            var newDate = DateTime.Now.AddDays(-i);
            Console.WriteLine(newDate.Day + " " + newDate.Month);
        }
相关问题