C# 通过两个日期将时间写为字符串

标签 c# datetime

我有一个转换的开始和开始日期时间,在此事件的开始和结束时记录。然后我生成一份报告,其中列出了有关该事件的大量信息,包括其运行时间。我有一个总时间列(以天为单位)和开始和停止的日期表示。一切都以天为单位,我不关心小时/分钟/秒。

如果开始时间是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/

相关文章:

c# - 与 C#/NET 中的控制台应用程序相关的问题

c# - 显示正在运行的应用程序(alt-tab 程序列表)

ruby - 是否有用于解析营业时间的 RubyGem?

MySQL datetime 默认时间间隔

php - 如何对日期/时间mysql字段执行循环检查时间值不等于 "00:00"?

php - 选择大于/小于时间

c# - ObjectContext 实例已被释放,不能再用于需要连接的操作。在引用表中

c# - GTK# + WebKit + Windows

c# - 针对接口(interface)和 Entity Framework 4.0 进行编程

datetime - 在Go中获取当前时区ID