【问题标题】:Input start-time, end-time and date produce proper start-date-time and end-date-time输入开始时间、结束时间和日期生成正确的开始日期时间和结束日期时间
【发布时间】:2013-03-27 22:15:56
【问题描述】:

在我的 C# 应用程序中,要求功能之一是在某个用户界面(Windows 窗体)上,用户输入开始时间、结束时间和日期。然后应用程序将生成正确的开始日期时间和结束日期时间以保存回数据库。下面列出了详细信息/场景。

有什么想法吗?提前谢谢你。

示例 1:

如果
输入日期:03/15/2013
输入开始时间:晚上 11:45
输入结束时间:凌晨 1:10
那么,
输出开始日期时间:“03/15/2013 23:45:00”
输出 end-date-time: "03/16/2013 01:10:00" // 注意:输出 end-date-time 比 start-date-time 晚 1 天

示例 2:

如果
输入日期:03/15/2013
输入开始时间:9:45 PM
输入结束时间:晚上 10:30
那么,
输出开始日期时间:“03/15/2013 21:45:00”
输出 end-date-time: "03/15/2013 22:30:00" // 注意:start-date-time 和 end-date-time 具有相同的日期

示例 3:

如果
输入日期:10/25/2012
输入开始时间:早上 6:10
输入结束时间:8:15 PM 那么,
输出开始日期时间:“10/25/2012 06:10:00”
输出 end-date-time: "10/25/2012 20:15:00" // 注意:start-date-time 和 end-date-time 具有相同的日期

示例 4:

如果
输入日期:07/12/2010
输入开始时间:早上 6:10
输入结束时间:凌晨 4 点 25 分 那么,
输出开始日期时间:“07/12/2010 06:10:00”
输出 end-date-time: "07/13/2010 04:25:00" // 注意:输出 end-date-time 比 start-date-time 晚 1 天

【问题讨论】:

  • 你试过什么? DateTime 对象不仅为您提供时间,还为您提供日期。开始和结束时间为您提供了一个可以轻松编写输出的日期。

标签: c# winforms


【解决方案1】:
    string InputDate = "3/15/2013";
    string InputStartTime = "11:45 PM";
    string InputEndTime = "1:10 AM";
    DateTime StartTime, EndTime;
    StartTime = Convert.ToDateTime(InputDate + " " + InputStartTime);
    EndTime = Convert.ToDateTime(InputDate + " " + InputEndTime);
    if (EndTime < StartTime)
        EndTime.AddDays(1);
    string OutputStartTime = StartTime.ToString("MM/dd/yyyy HH:mm:ss");
    string OutputEndTime = EndTime.ToString("MM/dd/yyyy HH:mm:ss");

【讨论】:

  • +1。但是,请将EndTime += new TimeSpan(1, 0, 0, 0) 替换为EndTime.AddDays(1)。如果您想要一天的TimeSpan,请使用TimeSpan.FromDays(1)
【解决方案2】:
var date = DateTime.ParseExact("03/15/2013 11:45 PM", "MM/dd/yyyy hh:mm tt", CultureInfo.InvariantCulture);

我让您根据您的业务规则制定创建作为第一个参数传递给此函数的字符串所需的逻辑。

【讨论】:

    【解决方案3】:

    在伪代码中:

    • 通过结合输入日期和输入开始时间创建开始日期D1
    • 通过结合输入日期和输入结束时间创建结束日期D2
    • 如果D2D1 之前,则将1 天添加到D2

    【讨论】:

      最近更新 更多