Exemplo n.º 1
0
        /// <summary>
        /// 出勤模式换算成时间
        /// </summary>
        /// <param name="mode">8:00-12:00;13:00-17:00</param>
        /// <returns></returns>
        public static List <APSAttendanceSlot> AttendanceModeTransformTime(string mode)
        {
            List <APSAttendanceSlot> itemList = new List <APSAttendanceSlot>();

            string[] lines = mode.Split(SplitHelper.SplitSemicolon);

            string[] TimeSlots;
            foreach (string line in lines)
            {
                if (!string.IsNullOrWhiteSpace(line))
                {
                    TimeSlots = line.Split(SplitHelper.SplitHyphen);//8:00  12:00

                    if (TimeSlots != null)
                    {
                        APSAttendanceSlot item = new APSAttendanceSlot();

                        //TimeSlots  中索引含义 0-小时 1-分钟
                        //开始时刻 TimeSlots[0]代表8:00
                        if (!string.IsNullOrWhiteSpace(TimeSlots[0]))
                        {
                            string[] slot = TimeSlots[0].Split(SplitHelper.SplitColon);//8 00

                            APSAttendanceTime start = new APSAttendanceTime();

                            start.hour   = int.Parse(slot[0]);
                            start.minute = int.Parse(slot[1]);

                            item.startSlot = start;
                        }

                        //结束时刻 TimeSlots[1]代表 12:00
                        if (!string.IsNullOrWhiteSpace(TimeSlots[1]))
                        {
                            string[] slot = TimeSlots[1].Split(SplitHelper.SplitColon);//12 00

                            APSAttendanceTime end = new APSAttendanceTime();

                            end.hour   = int.Parse(slot[0]);
                            end.minute = int.Parse(slot[1]);

                            item.endSlot = end;

                            item.SlotSeconds = TimeSlotDiff(item.startSlot, item.endSlot);
                        }

                        itemList.Add(item);
                    }
                }
            }

            return(itemList);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 计算两个时刻之间的时间差 返回值单位:秒
        /// </summary>
        /// <param name="start"></param>
        /// <param name="end"></param>
        /// <returns></returns>
        public static int TimeSlotDiff(APSAttendanceTime start, APSAttendanceTime end)
        {
            int totalSecond = 0;
            int dayHours    = 24;//一天24小时

            if (end.hour == 0)
            {
                end.hour = dayHours;
            }

            //8:00-12:00;13:00-17:00情况 不跨天
            if (start.hour <= end.hour)
            {
                totalSecond = (end.hour - start.hour) * 3600 + (end.minute - start.minute) * 60;//单位秒
            }
            //20:00-8:00
            if (start.hour > end.hour)
            {
                totalSecond = (end.hour + dayHours + -start.hour) * 3600 + (end.minute - start.minute) * 60;//单位秒
            }

            return(totalSecond);
        }