C# DateTime处理日+;月

C# DateTime处理日+;月,c#,windows-phone-7,windows-phone-8,C#,Windows Phone 7,Windows Phone 8,我需要在一周开始和结束时用月份名称排一行 我有一个日历控件,用于设置日期 并具有以下功能: public string DateToString(DateTime date) { string callback = ""; return callback; } 我不知道如何处理周开始和周结束的日期和月份 我需要字符串看起来像

我需要在一周开始和结束时用月份名称排一行

我有一个日历控件,用于设置日期

并具有以下功能:

public string DateToString(DateTime date)
    {
        string callback = "";
        return callback;
    }
我不知道如何处理周开始和周结束的日期和月份

我需要字符串看起来像<如果结束和开始是不同的月份:

7月29日至4日。2013年8月

同月:


15-21。如果mounth相同,则为2013年7月。您能帮助我吗?

也许您想将两个
DateTime
参数传递给该方法,这样更有意义:

public static string DateToString(DateTime dateStart, DateTime dateEnd)
{
    if (dateStart.Year == dateEnd.Year && dateStart.Month == dateEnd.Month)
    { 
        return string.Format("{0} - {1}, {2}"
            , dateStart.ToString("dd")
            , dateEnd.ToString("dd MMMM", CultureInfo.InvariantCulture)
            , dateStart.Year);
    }
    else if (dateStart.Year == dateEnd.Year)
    {
        return string.Format("{0} - {1}, {2}"
           , dateStart.ToString("dd MMMM", CultureInfo.InvariantCulture)
           , dateEnd.ToString("dd MMMM", CultureInfo.InvariantCulture)
           , dateStart.Year);
    }
    else
    {
        return string.Format("{0} - {1}"
               , dateStart.ToString("dd MMMM yyyy", CultureInfo.InvariantCulture)
               , dateEnd.ToString("dd MMMM yyyy", CultureInfo.InvariantCulture));
    }
}
您的示例数据:

var dt1 = new DateTime(2013, 07, 29);
var dt2 = new DateTime(2013, 08, 04);
Console.Write(DateToString(dt1, dt2));
dt1 = new DateTime(2013, 07, 15);
dt2 = new DateTime(2013, 07, 21);
Console.Write(DateToString(dt1, dt2));
输出:

29 July - 04 August, 2013:
15 - 21 July, 2013

所以根据你的评论,你有一个约会时间,你需要先找到一周的开始和结束。然后,您需要根据以下两个日期构建字符串:

public static DateTime StartOfWeek(DateTime dt, DayOfWeek startOfWeek)
{
    int diff = dt.DayOfWeek - startOfWeek;
    if (diff < 0)
    {
        diff += 7;
    }

    return dt.AddDays(-1 * diff).Date;
}
印刷品:

12 - 18 August, 2013

在一个日期时间内结束和开始?想知道你发布的函数做什么?所以这是主要问题,我需要根据给定的日期计算结束和开始日期。这意味着,我给出了:14.08.2013,它找出了周的开始日期(11.08.2013)和结束日期(17.08.2013)。您使用的文化是什么,您的周从什么时候开始?星期一-是beginning@Cheese:编辑我的答案。请编辑您的问题以澄清您的要求。这一点一开始并不明显。那么否决票也将被删除。
12 - 18 August, 2013