C# 使用DateTime将特定时间跨度的月份分组在一起 publicstaticstringtimeline2(这个HtmlHelper助手,stringmystring2) { StringBuilder myString3=新的StringBuilder(); 日期时间开始=新的日期时间(2010,1,1); DateTime end=新的DateTime(2011,12,12); myString3.追加(“”); myString3.追加(“”); 对于(日期时间日期=开始;日期

C# 使用DateTime将特定时间跨度的月份分组在一起 publicstaticstringtimeline2(这个HtmlHelper助手,stringmystring2) { StringBuilder myString3=新的StringBuilder(); 日期时间开始=新的日期时间(2010,1,1); DateTime end=新的DateTime(2011,12,12); myString3.追加(“”); myString3.追加(“”); 对于(日期时间日期=开始;日期,c#,datetime,loops,dayofweek,C#,Datetime,Loops,Dayofweek,使用LINQ: MAY MTWTFSSMTWTFSSMTWTFSSMTWTFSSMTWTF 12345678 JUNE MTWTFSSMTWTFSSMTWTFSSMTWTFSSMTWTF 123456789 好的,下一个不带LINQ的变体: DateTime startDate = new DateTime(2010, 1, 1); DateTime endDate = new DateTime(2010, 12, 31); int monthCount = (end

使用LINQ:

MAY MTWTFSSMTWTFSSMTWTFSSMTWTFSSMTWTF 12345678 JUNE MTWTFSSMTWTFSSMTWTFSSMTWTFSSMTWTF 123456789 好的,下一个不带
LINQ
的变体:

DateTime startDate = new DateTime(2010, 1, 1);
DateTime endDate = new DateTime(2010, 12, 31);

int monthCount =
    (endDate.Month - startDate.Month + 1) +
    (endDate.Year - startDate.Year) * 12;

Enumerable
    .Range(0, monthCount)
    .Select(x => new DateTime(startDate.Year, startDate.Month, 1).AddMonths(x))
    .ToList()
    .ForEach(d1 =>
    {
        string month = d1.ToString("MMMM");
        // here should be your code
        // to work with months

        Enumerable
            .Range(0, d1.AddMonths(1).AddDays(-1).Day)
            .Select(x => d1.AddDays(x))
            .ToList()
            .ForEach(d2 =>
            {
                string dayOfWeek = d2.ToString("ddd");
                string day = d2.Day.ToString();
                // here should be your code
                // to work with days
            });
    });
StringBuilder sb=新建StringBuilder();
DateTime startDate=新的日期时间(2010,1,1);
DateTime endDate=新的日期时间(2012,12,31);
国际月计数=
(endDate.Month-startDate.Month+1)+
(endDate.Year-startDate.Year)*12;
对于(int i=0;i”,月);
int daysInMonth=d1.AddMonths(1.AddDays(-1.Day);
StringBuilder daysOfWeekRow=新建StringBuilder();
StringBuilder daysRow=新建StringBuilder();
对于(int j=0;j
您可以根据需要更改输出格式。我仅提供了基本示例

主要的事情是迭代必要的日期(使用或不使用
LINQ
由您选择,但您可以同意
LINQ
的解决方案更优雅),并在必要的位置添加自定义格式(我在第一个示例中的注释位置)(此HtmlHelper帮助程序,字符串myString1) { StringBuilder string2=新的StringBuilder(); DateTime startDate=新的日期时间(2010,1,1); DateTime endDate=新的日期时间(2011,12,12); 第二条附后(“”);
对于(DateTime date=startDate;date谢谢老兄,谢谢你,我需要做另一个循环才能获得超过一年的时间吗?@Calibre2010:不,这里不需要另一个循环。你唯一需要做的就是更改开始和/或结束日期变量。如果我在年份值中添加一个变量,它会出错,因为它看不到年份的增加,只是在年内月值中的增量?@Calibre2010:如果您想在两年内这样做,只需将示例的第二行更改为
DateTime endDate=new DateTime(2011,12,31);
。不需要任何其他内容。我在键入----年、月和日参数描述不可表示的日期时间后出现此错误。如果该年没有递增,则..DateTime d1=新的日期时间(startDate.Year,startDate.Month+I,1); MAY MTWTFSSMTWTFSSMTWTFSSMTWTFSSMTWTF 12345678 JUNE MTWTFSSMTWTFSSMTWTFSSMTWTFSSMTWTF 123456789
DateTime startDate = new DateTime(2010, 1, 1);
DateTime endDate = new DateTime(2010, 12, 31);

int monthCount =
    (endDate.Month - startDate.Month + 1) +
    (endDate.Year - startDate.Year) * 12;

Enumerable
    .Range(0, monthCount)
    .Select(x => new DateTime(startDate.Year, startDate.Month, 1).AddMonths(x))
    .ToList()
    .ForEach(d1 =>
    {
        string month = d1.ToString("MMMM");
        // here should be your code
        // to work with months

        Enumerable
            .Range(0, d1.AddMonths(1).AddDays(-1).Day)
            .Select(x => d1.AddDays(x))
            .ToList()
            .ForEach(d2 =>
            {
                string dayOfWeek = d2.ToString("ddd");
                string day = d2.Day.ToString();
                // here should be your code
                // to work with days
            });
    });
StringBuilder sb = new StringBuilder();

DateTime startDate = new DateTime(2010, 1, 1);
DateTime endDate = new DateTime(2012, 12, 31);

int monthCount =
    (endDate.Month - startDate.Month + 1) +
    (endDate.Year - startDate.Year) * 12;

for (int i = 0; i < monthCount; i++)
{
    DateTime d1 = new DateTime(startDate.Year, startDate.Month, 1).AddMonths(i);
    string month = d1.ToString("MMMM");

    sb.AppendFormat("<p>{0}</p>", month);

    int daysInMonth = d1.AddMonths(1).AddDays(-1).Day;
    StringBuilder daysOfWeekRow = new StringBuilder();
    StringBuilder daysRow = new StringBuilder();
    for (int j = 0; j < daysInMonth; j++)
    {
        DateTime d2 = d1.AddDays(j);
        string dayOfWeek = d2.ToString("ddd");
        string day = d2.Day.ToString();

        daysOfWeekRow.AppendFormat("<td>{0}</td>", dayOfWeek);
        daysRow.AppendFormat("<td>{0}</td>", day);
    }
    sb.AppendFormat(
        "<table><tr>{0}</tr><tr>{1}</tr></table>",
        daysOfWeekRow.ToString(), 
        daysRow.ToString()
    );
}

string result = sb.ToString();
 public static string TimeLine(this HtmlHelper helper, string myString1)
    {
        StringBuilder string2 = new StringBuilder();

        DateTime startDate = new DateTime(2010, 1, 1);
        DateTime endDate = new DateTime(2011, 12, 12);

        string2.Append("<table>");

        for (DateTime date = startDate; date <= endDate; date = date.AddMonths(1))
        {



            string2.Append("<p>" + date.AddMonths(1) + "</p>");

            //DateTime ddd = new DateTime(year, month);

            string2.Append("<tr>");

            for (date = startDate; date <= endDate; date = date.AddMonths(1).AddDays(1))
            {
                DayOfWeek dw = date.DayOfWeek;

                var dateShortHand = "";

                switch (dw)
                {
                    case DayOfWeek.Monday:
                        dateShortHand = "M";
                        break;
                    case DayOfWeek.Tuesday:
                        dateShortHand = "T";
                        break;
                    case DayOfWeek.Wednesday:
                        dateShortHand = "W";
                        break;
                    case DayOfWeek.Thursday:
                        dateShortHand = "T";
                        break;
                    case DayOfWeek.Friday:
                        dateShortHand = "F";
                        break;
                    case DayOfWeek.Saturday:
                        dateShortHand = "S";
                        break;
                    case DayOfWeek.Sunday:
                        dateShortHand = "S";
                        break;
                }
                string2.Append("<td>" + dateShortHand + "</td>");

            }
            string2.Append("</tr>");





            string2.Append("<tr>");

            //for (int i = 1; i <= ff; date = date.AddDays(1))
            //{

            //    var f = date.Day;
            //    string2.Append("<td>" + f + "</td>");

            //}
            string2.Append("</tr>");



        }



        string2.Append("</table>");


        return string2.ToString();

    }