我需要找到2个优雅的完整实现
public static DateTime AddBusinessDays(this DateTime date, int days)
{
// code here
}
and
public static int GetBusinessDays(this DateTime start, DateTime end)
{
// code here
}
Run Code Online (Sandbox Code Playgroud)
O(1)优选(无环).
编辑:工作日我指的是工作日(周一,周二,周三,周四,周五).没有假期,只是周末排除在外.
我已经有一些似乎有效的丑陋解决方案,但我想知道是否有优雅的方法来做到这一点.谢谢
这就是我到目前为止所写的内容.它适用于所有情况,也会产生负面影响.仍然需要GetBusinessDays实现
public static DateTime AddBusinessDays(this DateTime startDate,
int businessDays)
{
int direction = Math.Sign(businessDays);
if(direction == 1)
{
if(startDate.DayOfWeek == DayOfWeek.Saturday)
{
startDate = startDate.AddDays(2);
businessDays = businessDays - 1;
}
else if(startDate.DayOfWeek == DayOfWeek.Sunday)
{
startDate = startDate.AddDays(1);
businessDays = businessDays - 1;
}
}
else
{
if(startDate.DayOfWeek …Run Code Online (Sandbox Code Playgroud) 我目前在我的SQL数据库中有一个函数,它在一个日期中添加了一定的工作日,例如,如果您输入的是星期四的日期并添加两天,它将返回下一个星期一的日期.我对任何假期都不感到烦恼,只有周末才被排除在外.
问题是,这当前使用while循环完成,并且它似乎大大减慢了在生成表时使用它的存储过程.有没有人知道是否有任何方法可以在没有while循环或游标的情况下执行此计算?
仅供参考,这是当前的功能:
ALTER FUNCTION [dbo].[AddWorkDaysToDate]
(
@fromDate datetime,
@daysToAdd int
)
RETURNS datetime
AS
BEGIN
DECLARE @toDate datetime
DECLARE @daysAdded integer
-- add the days, ignoring weekends (i.e. add working days)
set @daysAdded = 1
set @toDate = @fromDate
while @daysAdded <= @daysToAdd
begin
-- add a day to the to date
set @toDate = DateAdd(day, 1, @toDate)
-- only move on a day if we've hit a week day
if (DatePart(dw, @toDate) != 1) and (DatePart(dw, @toDate) != …Run Code Online (Sandbox Code Playgroud) 使用这种相当简洁的方法,我可以从datepicker禁用周末和假期.
但是,我希望将此与从今天开始的下三个工作日的禁用相结合.只需设置最短日期相对简单:
var dateMin = new Date();
dateMin.setDate(dateMin.getDate() + 3);
$(function() {
$('#txtCollectionDate').datepicker(
{
beforeShowDay: noWeekendsOrHolidays,
showOn: "both",
dateFormat: "dd/mm/yy",
firstDay: 1,
changeFirstDay: false,
minDate: dateMin
});
});
Run Code Online (Sandbox Code Playgroud)
但是,我真正需要一个计算工作日的函数:
var dateMin = new Date();
dateMin.setDate(AddBusinessDays(3));
Run Code Online (Sandbox Code Playgroud)
任何人都能够转换这为JavaScript?