我有一个转换的开始和开始日期时间,在此事件的开始和结束时记录。然后我生成一份报告,其中列出了有关该事件的大量信息,包括其运行时间。我有一个总时间列(以天为单位)和开始和停止的日期表示。一切都以天为单位,我不关心小时/分钟/秒。
如果开始时间是9/29/2010,结束时间是9/31/2010我要打印:
9/29-31/2010
如果开始时间是9/29/2010,结束时间是10/2/2010我要打印:
9/29-10/2/2010
如果开始时间是12/29/2010,结束时间是1/2/2011我要打印:
12/29/2010-1/2/2011
我知道我可以使用 datetime 的 ToString("M/d/yyyy") 方法打印每个单独的日期,但我希望有一种简单的方法以类似的格式打印两个日期。
最佳答案
您的规则很容易转化为代码,无需花哨。
static string GetDateRangeString(DateTime startDate, DateTime endDate)
{
if (endDate.Year != startDate.Year)
{
return startDate.ToString("M/d/yyyy") + "-" + endDate.ToString("M/d/yyyy");
}
else if (endDate.Month != startDate.Month)
{
return startDate.ToString("M/d") + "-" + endDate.ToString("M/d/yyyy");
}
else
{
return startDate.ToString("M/d") + "-" + endDate.ToString("d/yyyy");
}
}
演示:
Console.WriteLine(GetDateRangeString(new DateTime(2010, 9, 29), new DateTime(2010, 9, 30)));
Console.WriteLine(GetDateRangeString(new DateTime(2010, 9, 29), new DateTime(2010, 10, 30)));
Console.WriteLine(GetDateRangeString(new DateTime(2010, 9, 29), new DateTime(2011, 1, 30)));
关于C# 通过两个日期将时间写为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852675/