我正在开发一个用于考勤控制的Web应用程序。我正在从ZKT
机器通过.Net
API.
以数组的形式获取数据。
从该API中,我没有得到In
或Out Time
的任何标志。因此,我采用了这样一种技术:第一次打孔时间将在In Time
而我最后一次进入的时间将是Out Time
在特定日期。因为在特定的一天我可能会得到2个以上的打卡时间。
现在我有了3班制的方案,该方案将在晚上10点开始,第二天早上6点结束。现在,我在考虑在这种情况下如何获得Out Time
。出勤日期将是一天In Time
的日期。例如,如果员工于2018年5月5日晚上10点到达,则3月5日为出勤日期。
请帮助解决此问题。
机器的数据输入格式
2017-06-16 09:00:00.000 I0495
2017-06-16 10:30:00.000 I0495
2017-06-16 13:00:00.000 I0495
2017-06-16 17:05:00.000 I0495
2017-06-16 09:15:00.000 I0603
2017-06-16 11:30:00.000 I0603
2017-06-16 00:00:00.000 I0603
2017-06-16 01:30:00.000 I0603
2017-06-16 17:10:00.000 I0603
这是处理白天时间偏移的代码
while (axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, out sdwEnrollNumber, out idwVerifyMode,
out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour, out idwMinute, out idwSecond, ref idwWorkcode))//get records from the memory
{
if (idwYear.ToString() == DtpAtt.Value.Year.ToString() && idwMonth.ToString() == DtpAtt.Value.Month.ToString() && idwDay.ToString() == DtpAtt.Value.Day.ToString())
{
iGLCount++;
lvLogs.Items.Add(iGLCount.ToString());
lvLogs.Items[iIndex].SubItems.Add(sdwEnrollNumber);//modify by Darcy on Nov.26 2009
lvLogs.Items[iIndex].SubItems.Add(idwVerifyMode.ToString());
lvLogs.Items[iIndex].SubItems.Add(idwInOutMode.ToString());
lvLogs.Items[iIndex].SubItems.Add(idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + " " + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString());
lvLogs.Items[iIndex].SubItems.Add(idwWorkcode.ToString());
var id = Convert.ToInt32(mdl.GetRecord("id", "atndnce", "attendance_id='" + sdwEnrollNumber + "' and attendance_date='" + DtpAtt.Value.ToString("yyyy-MM-dd") + "'"));
if (id > 0)
{
var time = mdl.GetRecord("in_time", "atndnce", "attendance_id='" + sdwEnrollNumber + "' and attendance_date='" + idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + "'");
mdl.UpdateRecord("atndnce", " duty_hours = '" + TxtHours.Text.ToString() + "', out_time='" + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString() + "'", "id = " + id.ToString());
}
else
mdl.InsertRecord("atndnce", "attendance_id,attendance_date,in_time,posted,duty_hours,machine_id", "'" + sdwEnrollNumber + "','" + idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + "','" + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString() + "',0 ,'" + TxtHours.Text.ToString() + "','" + CmbStation.SelectedValue + "'");
iIndex++;
}
}