Javascript 计算营业日/工作日C#

Javascript 计算营业日/工作日C#,javascript,c#,Javascript,C#,我想知道在这个表格中选择日期的工作日。我尝试了JavaScript代码,但在C#中使用它时遇到了一些困难 字符串开始日期、结束日期; startdate=“”; enddate=“”; foreach(DateGrid.Rows中的GridViewRow行) { if(row.RowType==DataControlRowType.DataRow) { 复选框chkRow=(行。单元格[0]。FindControl(“日期框”)作为复选框); 如果(已勾选) { startdate=行。单元格

我想知道在这个表格中选择日期的工作日。我尝试了JavaScript代码,但在C#中使用它时遇到了一些困难

字符串开始日期、结束日期;
startdate=“”;
enddate=“”;
foreach(DateGrid.Rows中的GridViewRow行)
{
if(row.RowType==DataControlRowType.DataRow)
{
复选框chkRow=(行。单元格[0]。FindControl(“日期框”)作为复选框);
如果(已勾选)
{
startdate=行。单元格[2]。文本;
enddate=行。单元格[3]。文本;
//验证输入
如果(结束日期<开始日期)
返回0;
//计算日期之间的天数
var millissecondsPerday=86400*1000;//以毫秒为单位的天
startdate.setHours(0,0,0,1);//午夜后启动-->如何在c#中执行此操作?
enddate.setHours(23,59,59,999);//在午夜前结束-->如何在c#中执行此操作?
var diff=enddate-startdate;//日期时间对象之间的毫秒数
变量天数=数学上限(差值/毫秒/日);
//中间每周减去两个周末
var周=数学下限(天/7);
天=天-(周*2);
////处理特殊情况-->这不是必需的,因为我选择了日期
//var startDay=startdate.getDay();
//var endDay=enddate.getDay();
//删除以前未删除的内容。
如果(开始日期-结束日期>1)
天=天-2;
//如果跨度在周日开始,但在周六之前结束,则删除开始日
如果(开始日期==0&&endDay!=6){
天=天-1;
}
//如果跨度在周六结束,但在周日之后开始,则删除结束日
如果(endDay==6&&startDay!=0){
天=天-1;
}

如果可能的话,我需要一些帮助来在C#中使用它。

首先,您将日期转换为dateformat,并从startdate循环到endday

那么你可以这样用

 if (!(toValidate.DayOfWeek == DayOfWeek.Sunday || toValidate.DayOfWeek == DayOfWeek.Saturday))
            {
                // do your logic 
            }
更新

          int countWorkingDays= 0;
          string startdate1 = "2014/04/28";
          string  enddate1 ="2014/09/12";

            DateTime startdate= DateTime.ParseExact(startdate1, "yyyy/MM/dd",System.Globalization.CultureInfo.InvariantCulture);
            DateTime enddate= DateTime.ParseExact(enddate1, "yyyy/MM/dd",System.Globalization.CultureInfo.InvariantCulture);
            DateTime date =startdate;
            while (date<= enddate)
            {
                if (!(date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday))
                {
                    countWorkingDays++;
                }
                date= date.AddDays(1);  
            }
            Console.WriteLine("WorkingDays " +countWorkingDays);
int countWorkingDays=0;
字符串startdate1=“2014/04/28”;
字符串enddate1=“2014/09/12”;
DateTime startdate=DateTime.ParseExact(startdate1,“yyyy/MM/dd”,System.Globalization.CultureInfo.InvariantCulture);
DateTime enddate=DateTime.ParseExact(enddate1,“yyyy/MM/dd”,System.Globalization.CultureInfo.InvariantCulture);
日期时间日期=开始日期;

而(日期<代码>用于(DateTime date=Start_date;date try
System.DateTime.Parse
它将返回您的日期和午夜时间,并将其用作startdate,然后使用相同的函数解析enddate,并向enddate添加23小时、59分钟和59秒。请阅读
System.DateTime
object@Nakala有一些代码,你写的,但它给我错误的days..例如,在第二行日期中,返回类似于342 working的值days@MaraPimentel:更新我做到了:)我会更新我的问题以帮助有同样问题的人..但当我回复时。也请写下看看一个日期有多少天,它给了我1,2,3,4…99(选择的日期有100个工作日)我怎么能只返回100个工作日来显示在标签或其他东西上?@MaraPimentel好的。我的示例显示的100天与您预期的一样。是否可以,请设置为答案。
          int countWorkingDays= 0;
          string startdate1 = "2014/04/28";
          string  enddate1 ="2014/09/12";

            DateTime startdate= DateTime.ParseExact(startdate1, "yyyy/MM/dd",System.Globalization.CultureInfo.InvariantCulture);
            DateTime enddate= DateTime.ParseExact(enddate1, "yyyy/MM/dd",System.Globalization.CultureInfo.InvariantCulture);
            DateTime date =startdate;
            while (date<= enddate)
            {
                if (!(date.DayOfWeek == DayOfWeek.Sunday || date.DayOfWeek == DayOfWeek.Saturday))
                {
                    countWorkingDays++;
                }
                date= date.AddDays(1);  
            }
            Console.WriteLine("WorkingDays " +countWorkingDays);
for (DateTime date = Start_Date; date <= End_Date; date = date.AddDays(1))
    {
        if (date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday)
        {
            yield return date;
        }
    }