C# 当前日期公式中特定日期的最后日期
我有一个要求,我想根据今天的日期计算给定日期的最后日期。例如,我有一个方法C# 当前日期公式中特定日期的最后日期,c#,algorithm,datetime,C#,Algorithm,Datetime,我有一个要求,我想根据今天的日期计算给定日期的最后日期。例如,我有一个方法 DateTime GetDate(DateTime now, DayOfWeek dayOfWeek) { //Logic goes here } 例如 若我在星期五过了星期五,而今天是星期一,那个么应该是星期五 上周五给我回信 如果我过了星期五,今天是星期五,那么应该是同一天 返回 条件: 我只想用公式来计算日期 不希望任何东西被假设或硬编码 我不想用if…else 您可以通过将一周中的当前日期与目标日期进行比较
DateTime GetDate(DateTime now, DayOfWeek dayOfWeek)
{
//Logic goes here
}
例如
您可以通过将一周中的当前日期与目标日期进行比较,计算出要减去多少天,如果是负数,则将其换行:
static DateTime GetDate(DateTime now, DayOfWeek dayOfWeek)
{
// Number of days to subtract, e.g. 1 for "today is Friday, we want Thursday"
// The ((...) + 7) % 7 part is to handle wrap-around for negative values.
int daysDifference = ((now.DayOfWeek - dayOfWeek) + 7) % 7;
return now.AddDays(-daysDifference);
}
或使用(我的日期/时间API,允许更清晰地表示“仅一个日期”等):
您可以通过将一周中的当前日期与目标日期进行比较,计算出要减去多少天,如果是负数,则将其换行:
static DateTime GetDate(DateTime now, DayOfWeek dayOfWeek)
{
// Number of days to subtract, e.g. 1 for "today is Friday, we want Thursday"
// The ((...) + 7) % 7 part is to handle wrap-around for negative values.
int daysDifference = ((now.DayOfWeek - dayOfWeek) + 7) % 7;
return now.AddDays(-daysDifference);
}
或使用(我的日期/时间API,允许更清晰地表示“仅一个日期”等):
嗯
嗯
为什么不使用if/else?虽然我可以看出这可能没有必要,但它最终可能是最干净的方法。你想保持一天中的同一个时间吗?这听起来像一个作业指导书,你试过什么?我不知道我的问题看起来是一个作业指导书,我只想知道最短的公式,它可以用if,loops来完成,但我试着开发一个公式,我不能,所以我把它贴在这里。你为什么不想用if/else呢?虽然我可以看出这可能没有必要,但它最终可能是最干净的方法。你想保持一天中的同一个时间吗?这听起来像一个工作指令,你尝试过什么?我不知道我的问题看起来是一个工作指令,我只想知道最短的公式,它可以使用if,loops来完成,但我试图开发一个公式,我不能,所以我把它贴在这里。
DateTime GetDate(DateTime now, DayOfWeek dayOfWeek)
{
var day = new TimeSpan(1, 0, 0, 0);
var result = now;
while(result.DayOfWeek != dayOfWeek)
{
result = result.Substract(day)
}
return result;
}
private static DateTime GetDate(DateTime todayDate, DayOfWeek dayofweek)
{
while (todayDate.DayOfWeek != dayofweek)
{
todayDate = todayDate.AddDays(-1);
}
return todayDate;
}