首页 > 解决方案 > 计算格式为 12 小时(上午,下午)的员工的工作时间

问题描述

在我的考勤门户中,员工通过提供签入时间和签出时间来标记考勤。我正在使用时间格式为 12 小时(上午,下午)的 Bootstrap datetimepicker。我想计算员工每天的总工作时间,但我面临日期时间格式问题。那么,当格式为 12 小时(上午,下午)时,如何计算员工每天的总工作时间

这是我的视图代码

 <div class="col-md-3">
                <label>Date <span class="text-danger">*</span></label>
                <div id="datepicker" class="input-group date" data-link-field="dtp_input2" data-date-format="dd/mm/yyyy" data-link-format="dd/mm/yyyy">
                    @*<input class="form-control" type="text" readonly />*@
                    @Html.TextBoxFor(model => model.Date, new { @class = "form-control", autocomplete = "off" })
                    <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
                    <span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>
                </div>
                <input type="hidden" id="dtp_input2" value="" /><br />
                </div>

          <div class="col-md-3">
                    <label>Check In <span class="text-danger">*</span></label>
                    @*<input type="datetime-local" id="CheckIn" name="CheckIn">*@
                    <div class="input-group date form_datetime" data-date="" data-date-format="mm/dd/yyyy HH:ii p" data-link-field="dtp_input1" data-link-format="mm/dd/yyyy HH:ii  ">
                        @Html.TextBoxFor(model => model.CheckIn, new { @class = "form-control", autocomplete = "off", required = "required" })
                        <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
                        <span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>
                    </div>

                    <input type="hidden" id="dtp_input1" value="" /><br />
                </div>

                <div class="col-md-3">
                    <label>Check Out</label>
                    @*<input type="datetime-local" id="CheckOut" name="CheckOut">*@
                    <div class="input-group date form_datetime2" data-date="" data-date-format="mm/dd/yyyy HH:ii p" data-link-field="dtp_input3" data-link-format="mm/dd/yyyy HH:ii ">
                        @Html.TextBoxFor(model => model.CheckOut, new { @class = "form-control", autocomplete = "off" })
                        <span class="input-group-addon"><span class="glyphicon glyphicon-remove"></span></span>
                        <span class="input-group-addon"><span class="glyphicon glyphicon-time"></span></span>
                    </div>
                    <input type="hidden" id="dtp_input3" value="" /><br />
                </div>

              <div class="row">
            <div class="col-md-12">
                <input type="button" id="save" class="btn btn-primary" value="Mark Attendance" />
                @Html.ActionLink("My Attendance", "Index", "Attendance")
            </div>
        </div>

  <script>

        $("#save").click(function () {

            var obj = {
                Emp_Id : $(Emp_Id).val(),
                Date: $("#Date").val(),
                CheckIn: $("#CheckIn").val(),
                CheckOut: $("#CheckOut").val(),
                
            };
            //window.location.href = "/path/to/thankyoupage"
            var Url = '@Url.Action("Create", "Attendance")';
            $.ajax({
                url: Url,
                type: "POST",
                data: obj,
                dataType: "html",
                success: function (data) {
                    if (data.isError==false) {
                        alert(data.message);
                    }
                }
            });
        })

</script>

这是我的控制器代码

 [HttpPost]
        public JsonResult Create(Attendance attendance)
        {

            // if (attendance.Date == todayDate) return BadRequest("Too late or too early");

            // var hasAttendance = db.Attendance.Any(i => i.Emp_Id = attendance.Emp_Id && i.Date == todayDate);
            //DateTime tempDate = Convert.ToDateTime(attendance.Date);                              
            if (ModelState.IsValid)
            {
                try
                {
                    attendance.CheckIn = Convert.ToDateTime(attendance.CheckIn.ToString("yyyy-MM-dd HH:mm:ss"));
                    
                        attendance.CheckOut = Convert.ToDateTime(attendance.CheckOut.Value.ToString("yyyy-MM-dd HH:mm:ss"));
                    
                   
                    
                        attendance.Date = DateTime.Now;

                        var attdate = attendance.Date;
                        var nextdate = attdate.AddDays(1);
                        var id = Convert.ToInt32(Session["UserID"]);
                        var isExist = db.Attendance.FirstOrDefault(i => i.Emp_Id == id && i.Date == attdate && i.Date < nextdate);

                        if (isExist != null)
                        {
                            //return Content("<script language='javascript' type='text/javascript'>alert('Your Attendance is Already Marked');</script>");
                            //ViewBag.isExist = false;
                            //TempData["Msg"] = ("Your Attendance is Already Marked");
                            var kMessage = "Your Attendance is Already Marked";
                            //return RedirectToAction("Index", "Attendance", new { message = kMessage });
                            return Json(new { isError = false, message = kMessage });
                        }
                        else
                        {
                            //attendance.Emp_Id = id;
                            //var res = tempDate.Date;
                            db.Attendance.Add(attendance);
                            db.SaveChanges();

                            ViewBag.kMessage = "";
                        }
                    
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.InnerException.Message);
                }
            }
                return Json(new {isError=false,message="YAAAAAAAAAAAAY" });
            //return RedirectToAction("Index", "Attendance");
        }

标签: jqueryasp.netasp.net-mvc

解决方案


推荐阅读