【问题标题】:Get End Time from Start Time and Duration [closed]从开始时间和持续时间获取结束时间[关闭]
【发布时间】:2013-09-26 04:49:41
【问题描述】:

我有 hh:mm:ss 格式的开始时间,然后以小时为单位输入持续时间并选择一周中的某一天。

我想根据以上参数计算结束时间。

例如:开始时间是 00:00:00,输入的时间是 48 小时,星期天是星期日。结束时间必须是星期二的 00:00:00。

怎么做?

【问题讨论】:

标签: c#


【解决方案1】:
public static void Main()
{
    var today = "Sunday";
    DayOfWeek dw;
    DayOfWeek.TryParse(today, true, out dw);
    int hours = 48;
    int days = hours / 24;
    int remainder = hours % 24;
    DayOfWeek endDay = dw + days;
    Console.Write("End time: {0} at {1}", endDay, remainder);
} 

【讨论】:

  • 请记住,由于跳跃/夏令时/等,添加 48 小时并不总是会导致恰好两个 DayOfWeeks 保持相同的时间过去。
【解决方案2】:

试试这个:

//assuming that you have a validation for your startTime that this will always on this format "HH:mm:ss"
private static string GetEndTime(string startTime, int duration, DayOfWeek dayOfWeek)
{
    DateTime startDateTime = DateTime.Parse(startTime);
    DateTime endDateTime = startDateTime.AddHours(duration);

    return endDateTime.ToString("HH:mm:ss");
}

private static DayOfWeek GetEndDay(int duration, DayOfWeek dayOfWeek)
{
    int days = duration / 24;
    DayOfWeek endDay = dayOfWeek + days;

    return endDay;
}

static void Main()
{
    string testStartTime = "00:00:00";
    DayOfWeek startDay = DayOfWeek.Sunday;
    int duration = 48;

    string endTime = GetEndTime(testStartTime, duration, startDay);
    DayOfWeek endDay = GetEndDay(duration, startDay);
    Console.WriteLine("End Time is {0} hours on {1}", endTime, endDay.ToString());

}

【讨论】:

    【解决方案3】:

    考虑使用DateTime.AddHours() 函数

    【讨论】:

      【解决方案4】:

      将 TimeSpan 添加到 DateTime :

      var today = System.DateTime.Now;
      var duration = new System.TimeSpan(48, 0, 0, 0);
      var endDateTime= today.Add(duration);
      

      【讨论】:

        【解决方案5】:
        string start = "00:00:00";
        DayOfWeek startDay = DayOfWeek.Sunday;
        int duration = 48;
        DateTime date = DateTime.Parse(start);
        while(date.DayOfWeek != startDay)
        {
            date = date.AddDays(1);
        }
        date = date.AddHours(duration);
        
        DayOfWeek resultDay = date.DayOfWeek;
        string time = date.ToLongTimeString();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-22
          • 2021-08-03
          • 1970-01-01
          相关资源
          最近更新 更多