相关疑难解决方法(0)

AddBusinessDays和GetBusinessDays

我需要找到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)

.net c#

85
推荐指数
4
解决办法
6万
查看次数

在SQL中添加工作日,无需循环

我目前在我的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)

sql date

33
推荐指数
7
解决办法
6万
查看次数

jQuery Datepicker - 禁用周末/假期以及接下来的三个工作日

使用这种相当简洁的方法,我可以从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?

jquery datepicker

3
推荐指数
1
解决办法
4万
查看次数

标签 统计

.net ×1

c# ×1

date ×1

datepicker ×1

jquery ×1

sql ×1