从开始时间和持续时间获取结束时间

本文关键字:时间 获取 结束 持续时间 开始时 开始 | 更新日期: 2023-09-27 18:32:47

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

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

例如:开始时间为 00:00

:00,输入的 duartion 为 48 小时,星期几为星期日。结束时间必须是星期二的 00:00:00 小时。

怎么办?

从开始时间和持续时间获取结束时间

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);
} 

试试这个:

//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());
}

考虑使用 DateTime.AddHours() 函数

将 TimeSpan 添加到日期时间:

var today = System.DateTime.Now;
var duration = new System.TimeSpan(48, 0, 0, 0);
var endDateTime= today.Add(duration);
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();