起止时间范围计算具体天数和小时

合集下载

24时计时法与普通计时法对照表整理好

24时计时法与普通计时法对照表整理好

24时计时法与普通计时法对照表整理好在我们的日常生活中,计时法是非常重要的。

它帮助我们准确地安排时间,规划活动。

常见的计时法有 24 时计时法和普通计时法。

接下来,让我们详细地了解一下这两种计时法,并整理出一个清晰的对照表。

24 时计时法,顾名思义,是将一天的时间按照 24 个小时来计算。

从 0 时开始,一直到 23 时结束。

这种计时法的优点是非常简洁明了,不会有上午、下午这样的区分,在很多需要精确计时的场合,比如交通、科研、军事等领域,被广泛使用。

普通计时法则将一天分为两段,从凌晨 0 时到中午 12 时为一段,从中午 12 时到晚上 12 时为另一段。

在表述时间的时候,需要加上上午、下午、晚上等词语来区分。

下面是 24 时计时法与普通计时法的详细对照表:| 24 时计时法|普通计时法||||| 0 时|凌晨 0 时|| 1 时|凌晨 1 时|| 2 时|凌晨 2 时|| 4 时|凌晨 4 时|| 5 时|凌晨 5 时|| 6 时|早上 6 时|| 7 时|早上 7 时|| 8 时|早上 8 时|| 9 时|上午 9 时|| 10 时|上午 10 时|| 11 时|上午 11 时|| 12 时|中午 12 时|| 13 时|下午 1 时|| 14 时|下午 2 时|| 15 时|下午 3 时|| 16 时|下午 4 时|| 17 时|下午 5 时|| 18 时|下午 6 时|| 19 时|晚上 7 时|| 21 时|晚上 9 时|| 22 时|晚上 10 时|| 23 时|晚上 11 时|通过这个对照表,我们可以清晰地看到两种计时法之间的转换关系。

比如说,如果我们看到 18 时,通过对照表就能知道这是普通计时法中的下午 6 时。

在实际生活中,我们经常会遇到需要在两种计时法之间进行转换的情况。

比如,当我们看电影时,电影票上写着 19:30 开场,这就是 24时计时法,如果要告诉别人,可能就会说“晚上 7 点 30 分开场”,这就是转换成了普通计时法。

起止时间怎么快速计算公式

起止时间怎么快速计算公式

起止时间怎么快速计算公式在日常生活和工作中,我们经常需要计算起止时间之间的时间差,比如计算工作时间、旅行时间、项目周期等等。

如果能够快速计算起止时间之间的时间差,将会极大地提高工作效率。

下面将介绍一些常见的快速计算公式,帮助大家更快速地计算起止时间之间的时间差。

1. 计算两个时间点之间的小时数。

如果我们需要计算两个时间点之间的小时数,可以使用以下公式:小时数 = (终止时间起始时间) / 3600。

其中,终止时间和起始时间都是以秒为单位的时间戳。

通过这个公式,我们可以快速地计算出两个时间点之间的小时数。

2. 计算两个时间点之间的天数。

如果我们需要计算两个时间点之间的天数,可以使用以下公式:天数 = (终止时间起始时间) / 86400。

同样,终止时间和起始时间都是以秒为单位的时间戳。

通过这个公式,我们可以快速地计算出两个时间点之间的天数。

3. 计算两个时间点之间的工作日数。

如果我们需要计算两个时间点之间的工作日数,可以使用以下公式:工作日数 = (终止时间起始时间) / 86400 (周末天数 + 节假日天数)。

其中,终止时间和起始时间都是以秒为单位的时间戳,周末天数和节假日天数分别是两个时间点之间的周末天数和节假日天数。

通过这个公式,我们可以快速地计算出两个时间点之间的工作日数。

4. 计算两个时间点之间的分钟数。

如果我们需要计算两个时间点之间的分钟数,可以使用以下公式:分钟数 = (终止时间起始时间) / 60。

同样,终止时间和起始时间都是以秒为单位的时间戳。

通过这个公式,我们可以快速地计算出两个时间点之间的分钟数。

通过以上几个公式,我们可以快速地计算出起止时间之间的时间差,从而更高效地完成工作和生活中的时间管理。

希望这些公式能够帮助大家更好地应用于实际生活和工作中。

第一单元《租船问题》(教案)

第一单元《租船问题》(教案)

第一单元《租船问题》(教案)教学目标:1.能够理解“租船问题”的含义及基本概念。

2.能够正确地计算租船的费用和时间。

3.能够通过练习锻炼自己的计算能力。

教学重点:1.租船问题的概念。

2.计算租船的费用和时间。

教学难点:1.运用所学知识解决实际问题。

2.练习计算能力。

教学过程:一、引入教师可以在黑板上问学生是否听说过租船这个名词,即引出今天的主题——租船问题。

二、讲解1.什么是租船问题?租船问题一般指在指定的时间内,以指定的价格租用特定类型船只的问题。

租船问题一般会涉及到船只数量、使用时间、租船费用等多项因素。

2.如何计算租船费用和时间?计算租船费用通常需要知道以下三个因素:(1)雇用的船只数量;(2)雇用的时间长度;(3)每种类型船只的租船费用。

例如:甲公司雇用4艘快艇23小时,租费每小时140元;另雇用10艘游艇6小时,租费每小时150元。

该公司应支付的租船费用是多少元?解答步骤如下:(1)计算快艇费用:4×23×140=12880元(2)计算游艇费用:10×6×150=9000元(3)总费用:12880+9000=21880元计算租船时间通常需要根据所租船只的起止日期和时间计算。

例如:甲公司从某日上午9点雇用快艇至某日下午4:30,计算应支付费用。

租用快艇费用为每天220元。

解答步骤如下:(1)计算天数:由出发日和返航日及时间可知,租船时间为1天(不足1天按1天计算)。

(2)计算费用:1天×220元=220元。

三、练习老师可以从书本或试卷中选择一些例题进行练习,加深学生理解和记忆租船问题相关概念和计算方法。

例如:小明租一艘船,每小时租金20元。

他从下午4点30分到晚上8点,租船时间为多少?应支付多少租金?解答步骤如下:(1)计算时间:下午4点30分到晚上8点,共3小时30分钟,计算为4小时。

(2)计算租金:4小时×20元/小时=80元。

24时计时法与普通计时法对照表整理好

24时计时法与普通计时法对照表整理好

24时计时法与普通计时法对照表整理好在我们的日常生活中,计时法是非常重要的。

它帮助我们准确地安排时间、规划活动。

常见的计时法有24 时计时法和普通计时法。

下面,我们就来详细整理一下它们的对照表。

24 时计时法,顾名思义,是将一天的时间按照 24 个小时来计算。

从 0 时开始,一直到 24 时结束。

这种计时法在很多场合都被广泛应用,比如交通运输、科学研究、国际交流等。

普通计时法,则通常将一天分为两段,即上午和下午(或者晚上)。

以 12 时为一个节点。

接下来,我们通过具体的时间来对比这两种计时法。

先从凌晨开始。

凌晨 0 时,在 24 时计时法中就是 0 时,而在普通计时法中则表示为凌晨 0 时。

凌晨 1 时,24 时计时法是 1 时,普通计时法是凌晨 1 时。

凌晨 2 时,同样,24 时计时法是 2 时,普通计时法是凌晨 2 时。

以此类推,一直到早上 5 时,两种计时法的表述都是一致的,分别是 5 时和早上 5 时。

早上 6 时,24 时计时法是 6 时,普通计时法是早上 6 时。

早上 7 时,还是 7 时和早上 7 时的对应。

当到了早上 8 时,24 时计时法依然是 8 时,普通计时法是早上 8 时。

早上 9 时,9 时和早上 9 时相对应。

早上 10 时,为 10 时和早上 10 时。

早上 11 时,就是 11 时和早上 11 时。

接下来到了中午 12 时,这是一个关键的节点。

24 时计时法是 12 时,普通计时法是中午 12 时。

过了中午 12 时,两种计时法就开始有所不同了。

下午 1 时,24 时计时法是 13 时,因为过了 12 时,就要在原来的时间上加 12 。

普通计时法则是下午 1 时。

下午 2 时,24 时计时法是 14 时,普通计时法是下午 2 时。

下午 3 时,对应的是 15 时和下午 3 时。

下午 4 时,是 16 时和下午 4 时。

下午 5 时,为 17 时和下午 5 时。

下午 6 时,24 时计时法是 18 时,普通计时法是下午 6 时。

算时间段的公式

算时间段的公式

算时间段的公式在日常生活中,我们常常需要计算时间段,比如计算两个日期之间相差的天数、小时数等等。

而要计算这些时间段,我们需要掌握一些算时间段的公式。

下面,我们就来了解一下几种常用的算时间段的公式。

一、计算天数的公式计算两个日期之间相差的天数是比较常见的需求。

我们可以使用以下公式来计算:天数 = (EndDate - StartDate).Days其中,EndDate和StartDate分别表示结束日期和起始日期,Days是DateTime类型的属性,用于计算两个日期之间相差的天数。

对于一个比较复杂的时间差,我们可能需要计算出除天数之外的小时数、分钟数等等,那么我们可以通过以下公式来实现:天数 = (EndDate - StartDate).Days小时数 = ((EndDate - StartDate).TotalHours - 天数 * 24).ToInt32()分钟数 = ((EndDate - StartDate).TotalMinutes - 天数 * 1440 - 小时数 * 60).ToInt32()其中,TotalHours和TotalMinutes也是DateTime类型的属性,分别用于计算两个日期之间相差的小时数和分钟数。

二、计算工作日的公式在实际的工作中,我们常常需要计算两个日期之间的工作日数量,即除去周末和节假日的天数。

下面,我们来了解一下如何计算工作日的公式。

首先,我们需要获取指定日期所在的工作日。

我们可以使用以下公式来实现:private bool IsWorkday(DateTime dt){if (dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday){return false;}return true;}该方法用于判断指定日期是否是工作日。

如果是周六或周日,则返回false,否则返回true。

工程合同管理中的时间规定

工程合同管理中的时间规定

工程合同管理中的时间规定一、工期及起止日期1. 工程开工日期定为【具体年月日】,竣工日期定为【具体年月日】,总工期为【具体天数】天。

2. 除非遇到不可抗力或双方另有书面约定,任何一方不得擅自变更上述工期。

3. 如因甲方原因导致工程延期,应及时书面通知乙方,并由双方协商确定新的工期。

二、关键节点时间1. 【基础施工完成时间】预定为【具体年月日】。

2. 【主体结构封顶时间】预定为【具体年月日】。

3. 【内外装修完工时间】预定为【具体年月日】。

4. 各关键节点完成后,乙方应向甲方提交完成报告,由甲方组织验收。

三、进度计划与监督1. 乙方应在合同签订后【具体天数】日内提交详细的工程进度计划,并经甲方审核同意。

2. 甲乙双方应定期召开进度协调会议,评估工程进展情况,必要时调整进度计划。

3. 如乙方未能按照进度计划施工,应及时向甲方说明原因并提出补救措施。

四、延期与违约1. 若乙方因自身原因导致工程延期,应按合同约定支付违约金给甲方。

2. 若因甲方原因导致工程延期,甲方应根据实际情况对乙方进行补偿。

3. 对于不可抗力导致的工程延期,双方应根据实际情况协商解决。

五、竣工验收1. 工程完工后,乙方应通知甲方进行初步验收。

2. 初步验收合格后,乙方应协助甲方完成政府部门的竣工验收。

3. 竣工验收合格后,乙方应向甲方交付工程,并提供完整的工程档案资料。

六、保修期1. 工程竣工验收合格之日起进入保修期,保修期为【具体年限】年。

2. 在保修期内,乙方应对出现的质量问题负责维修,费用由乙方承担。

3. 保修期满后,乙方仍应对其施工质量承担相应的法律责任。

人教版三年级数学下《年、月、日和24小时计时法》知识点

人教版三年级数学下《年、月、日和24小时计时法》知识点

人教版三年级数学下《年、月、日和24小时计时法》知识点总结:
一、时间单位
1.常用的时间单位有:年、月、日和时、分、秒。

2.每年有12个月,其中7个大月,每个大月有31天,分别是1月、3月、5
月、7月、8月、10月、12月;4个小月,每个小月有30天分别是4月、6月、9月、11月。

3.连续的大月有7月和8月,天数是共62天。

4.平年:2月有28天,全年有365天;闰年:2月有29天,全年有366天。

5.每年下半年都是184天。

二、24小时计时法
1.普通计时法又叫12时计时法,就是把一天分成两个12小时表示,普通计时
法一定要加上“上午”、“下午”等前缀。

2.24时计时法:就是把一天分成24小时表示,在表示的时间前可以加或可以不
加表示的大概时间段得词语。

3.普通计时法转换成24时计时法时,超过下午1时的时刻用24时计时法表示
就是把原来的时刻加上12。

4.反过来要把24时计时法表示的时刻表示成普通计时法的时刻,超过13时的
时刻就减12,并加上下午,晚上等字在时刻前面。

5.计算经过时间,就是用结束时刻减开始时刻。

结束时刻-开始时刻=时间段(经
过时间)★(计算经过时间时,一定把不同的计时法变成相同的计时法再计算)。

6.认识时间与时刻的区别:(时间是一段,时刻是一个点)。

法定正常工作时间计算方法

法定正常工作时间计算方法

正常工作时间正常工作时间,是指用人单位在法定工作时间内所确定的工作时间。

根据最新法律规定,我国的法定工作时间是指每月工作21.75天,每天工作8小时。

关于职工全年月平均工作时间和工资折算问题的通知劳社部发〔2008〕3号一、制度工作时间的计算年工作日:365天-104天(休息日)-11天(法定节假日)=250天季工作日:250天÷4季=62.5天/季月工作日:250天÷12月=20.83天/月工作小时数的计算:以月、季、年的工作日乘以每日的8小时。

二、日工资、小时工资的折算按照《劳动法》第五十一条的规定,法定节假日用人单位应当依法支付工资,即折算日工资、小时工资时不剔除国家规定的11天法定节假日。

据此,日工资、小时工资的折算为:日工资:月工资收入÷月计薪天数小时工资:月工资收入÷(月计薪天数×8小时)。

月计薪天数=(365天-104天)÷12月=21.75天三、具体参考法律:《劳动法》第四章工作时间和休息休假第三十六条国家实行劳动者每日工作时间不超过8小时、平均每周工作时间不超过44小时的工时制度。

第三十七条对实行计件工作的劳动者,用人单位应当根据本法第三十六条规定的工时制度合理确定其劳动定额和计件报酬标准。

第三十八条用人单位应当保证劳动者每周至少休息1日。

第三十九条企业应生产特点不能实行本法第三十六条、第三十八条规定的,经劳动行政部门批准,可以实行其他工作和休息办法。

第四十条用人单位在下列节日期间应当依法安排劳动者休假:(一)元旦;(二)春节;(三)国际劳动节;(四)国庆节;(五)法律、法规规定的其他休假节日。

第四十一条用人单位由于生产经营需要,经与工会和劳动者协商后可以延长工作时间,一般每日不得超过1小时;因特殊原因需要延长工作时间的在保障劳动者身体健康的条件下延长工作时间每日不得超过3小时,但是每月不得超过36小时。

第四十二条有下列情形之一的,延长工作时间不受本法第四十一条规定的限制:(一)发生自然灾害、事故或者因其他原因,威胁劳动者生命健康和财产安全,需要紧急处理的;(二)生产设备、交通运输线路、公共设施发生故障,影响生产和公众利益,必须及时抢修的;(三)法律、行政法规规定的其他情形。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(共3步)首先在需要计算时间范围内天数的表单源代码中放置如下代码:(步骤1完全复制,不需修改)#region ValidateInputDate[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.Read)]public string ValidateInputDate(string strDtS, string strDtE) {UserInfoClass tUserInfo = (UserInfoClass)Session["UserInfo"];string userId = tUserInfo.LoginId;string tLanguageType = nguage;DateTime dtS;DateTime dtE;try{dtS = Convert.ToDateTime(strDtS);dtE = Convert.ToDateTime(strDtE);}catch (Exception ex){return ex.Message;}string errorMsg = String.Empty;if (dtS.ToString("yyyyMMdd") == dtE.ToString("yyyyMMdd")){WorkDateObj workDateObj =GetWorkDateDataObj(dtS.ToString("yyyy-MM-dd"), userId);if (workDateObj == null){//errorMsg += "Object is null [lable one]\n";errorMsg += MultiLanguage.GetComment("FD", "STD002AND4", "errorD", tLanguageType) + Environment.NewLine;errorMsg += MultiLanguage.GetComment("FD", "STD002AND4", "errorE", tLanguageType) + Environment.NewLine;}else{if (!workDateObj.ValidateBusinessLeaveDate(dtS)){//起始時間不符行事曆工作時間!errorMsg += MultiLanguage.GetComment("FD", "STD002AND4","errorB", tLanguageType) + Environment.NewLine;//errorMsg += "Inside ValidateBusinessLeaveDate [lable two]\n";}if (!workDateObj.ValidateBusinessLeaveDate(dtE)){//截止時間不符行事曆工作時間!errorMsg += MultiLanguage.GetComment("FD", "STD002AND4", "errorC", tLanguageType) + Environment.NewLine;}}}else{//DateTime dtS0 = new DateTime(dtS.Year, dtS.Month, dtS.Day);//DateTime dtE0 = new DateTime(dtE.Year, dtE.Month, dtE.Day);WorkDateObj workDateObjS =GetWorkDateDataObj(dtS.ToString("yyyy-MM-dd"), userId);WorkDateObj workDateObjE =GetWorkDateDataObj(dtE.ToString("yyyy-MM-dd"), userId);if (workDateObjS == null){//起始時間不存在於行事曆!errorMsg += MultiLanguage.GetComment("FD", "STD002AND4", "errorD", tLanguageType) + Environment.NewLine;}if (workDateObjE == null){//截止時間不存在於行事曆!errorMsg += MultiLanguage.GetComment("FD", "STD002AND4", "errorE", tLanguageType) + Environment.NewLine;}if (workDateObjS != null && workDateObjE != null){if (!workDateObjS.ValidateBusinessLeaveDate(dtS)){//起始時間不符行事曆工作時間!errorMsg += MultiLanguage.GetComment("FD", "STD002AND4", "errorB", tLanguageType) + Environment.NewLine;}if (!workDateObjE.ValidateBusinessLeaveDate(dtE)){//截止時間不符行事曆工作時間!errorMsg += MultiLanguage.GetComment("FD", "STD002AND4", "errorC", tLanguageType) + Environment.NewLine;}}}if (errorMsg != String.Empty){//錯誤!errorMsg = MultiLanguage.GetComment("FD", "STD002AND4", "errorF", tLanguageType) + Environment.NewLine + errorMsg;}return errorMsg;}#endregion#region CountBusinessLeaveHours[AjaxPro.AjaxMethod]public string CountBusinessLeaveHours(string strDtS, string strDtE, string userId) { DateTime dtS = Convert.ToDateTime(strDtS);DateTime dtE = Convert.ToDateTime(strDtE);if (dtS.ToString("yyyyMMdd") == dtE.ToString("yyyyMMdd")){WorkDateObj workDateObj =GetWorkDateDataObj(dtS.ToString("yyyy-MM-dd"), userId);double totalHours = workDateObj.CountWorkDayHours(dtS, dtE);DateTime dtS0 = new DateTime(dtS.Year, dtS.Month, dtS.Day);double perDayWorkHours = GetPerWorkHours(dtS0, userId);int day = Convert.ToInt32(Math.Floor(totalHours / perDayWorkHours));double hour = totalHours - perDayWorkHours * day;return day.ToString() + "@" + hour.ToString("##0.0");}else{DateTime dtS0 = new DateTime(dtS.Year, dtS.Month, dtS.Day);DateTime dtE0 = new DateTime(dtE.Year, dtE.Month, dtE.Day);//取得出差日之間的小時數double hoursBetween = 0;//大於一天才撈SQL 算BetweenTimeSpan ts = dtE0 - dtS0;if (ts.Days > 1){hoursBetween = CountLeaveDays(dtS0.AddDays(1),dtE0.AddDays(-1), userId);}WorkDateObj workDateObjS =GetWorkDateDataObj(dtS0.ToString("yyyy-MM-dd"), userId);WorkDateObj workDateObjE =GetWorkDateDataObj(dtE0.ToString("yyyy-MM-dd"), userId);double hoursS = workDateObjS.CountWorkDayHours(dtS, true);double hoursE = workDateObjE.CountWorkDayHours(dtE, false);double totalHours = hoursS + hoursBetween + hoursE;double perDayWorkHours = GetPerWorkHours(dtS0, userId);int day = Convert.ToInt32(Math.Floor(totalHours / perDayWorkHours));double hour = totalHours - perDayWorkHours * day;return day.ToString() + "@" + hour.ToString("##0.0");}}#endregion#region GetPerWorkHours 取得每天工作時數private double GetPerWorkHours(DateTime dt, string userId) {DBCommand dbCommand = DscDBData.GetDataDBCommand();string cmdTxt;cmdTxt = @"SELECT resaj005FROM EFNETDB..resajWHERE resaj002 = @resaj002AND resaj001 = (SELECT resak010FROM EFNETDB..resakWHERE resak001 = @userId)";dbCommand.AddParameter("resaj002", dt);dbCommand.AddParameter("userId", userId);DataTable dataTable = dbCommand.Query(cmdTxt);double hours = 0;if (dataTable.Rows.Count == 1){hours = Convert.ToDouble(dataTable.Rows[0]["resaj005"]);}return hours;}#endregion#region CountLeaveDays 計算出差總時數private double CountLeaveDays(DateTime dtS, DateTime dtE, string userId) { double hours = 0;DBCommand dbCommand = DscDBData.GetDataDBCommand();string cmdTxt;//2008/03/06:1.2.1.03:Joseph:A01-970305008:時間計算有誤cmdTxt = @"SELECT ISNULL( SUM(resaj005),0) AS leaveCountFROM EFNETDB..resajWHERE resaj002 >= @leaveDateS AND resaj002 <=@leaveDateEAND resaj001 = (SELECT resak010FROM EFNETDB..resakWHERE resak001 = @userId)";dbCommand.AddParameter("leaveDateS", dtS);dbCommand.AddParameter("leaveDateE", dtE);dbCommand.AddParameter("userId", userId);DataTable dt = dbCommand.Query(cmdTxt);if (dt.Rows.Count == 1){hours = Convert.ToDouble(dt.Rows[0]["leaveCount"]);}return hours;}#endregion#region GetWorkDateDataObj 取得行事曆物件///<summary>///取得行事曆物件///</summary>///<param name="workDate">工作天</param>///<param name="userId">使用者代號</param>///<returns></returns>private WorkDateObj GetWorkDateDataObj(string workDate, string userId) { try{DBCommand dbCommand = DscDBData.GetDataDBCommand(); string tSQL = " SELECT resaj003 as dateWorkS, resaj004 as dateWorkE, resaj006 as dateRestS,resaj007 as dateRestE,resaj.resaj002 FROM EFNETDB..resaj as resaj left join EFNETDB..resak as resak on resaj.resaj001=resak.resak010 WHERE resaj002 = '" + workDate + "' AND resak001 ='" + userId + "'";DataTable dt = dbCommand.Query(tSQL.ToString());// duration.Text="12";if (dt.Rows.Count > 0){DataRow dr = dt.Rows[0];WorkDateObj workDataObj = new WorkDateObj();workDataObj.dateWorkS = Convert.ToDateTime(dr["dateWorkS"]);workDataObj.dateWorkE = Convert.ToDateTime(dr["dateWorkE"]);workDataObj.dateRestS = Convert.ToDateTime(dr["dateRestS"]);workDataObj.dateRestE = Convert.ToDateTime(dr["dateRestE"]);return workDataObj;}else { return null; }}catch (Exception ex){throw ex;}}#endregion#region WorkDateObj 工作天物件(方便用於計算小時)///<summary>///工作天物件(方便用於計算小時)///</summary>class WorkDateObj{public DateTime dateWorkS;public DateTime dateWorkE;public DateTime dateRestS;public DateTime dateRestE;#region HoursAM 上午工作時數//上午工作時數public double HoursAM {get {TimeSpan ts = dateRestS - dateWorkS; //午休起- 上班起double hours = (ts.TotalMinutes) / 60.0;return hours;}}#endregion#region HoursPM 下午工作時數public double HoursPM {get {TimeSpan ts = dateWorkE - dateRestE; //上班訖- 午休訖double hours = (ts.TotalMinutes) / 60.0;return hours;}}#endregion#region ValidateBusinessLeaveDate 驗證出差日期是否合法(出差日期要在上班時間)//驗證出差日期是否合法(出差日期要在上班時間)public bool ValidateBusinessLeaveDate(DateTime dtWork) {//介於上班時間if ((dtWork >= dateWorkS) && (dtWork <= dateWorkE)){//而且不是在休息時間if ((dtWork <= dateRestS) || (dtWork >= dateRestE)){return true;}}return false;}#endregion#region CountWorkDayHours 計算工作小時(不同天)///<summary>///計算工作小時(不同天)///</summary>///<param name="dtWork">請假、出差工作時間</param>///<param name="IsWrokStart">是否為起始(否:截止)</param>///<returns></returns>public double CountWorkDayHours(DateTime dtWork, bool IsWrokStart) {//請假起if (IsWrokStart){//大於午休時間if (dtWork > dateRestE){TimeSpan ts = dateWorkE - dtWork; //下班- 出差時double hours = (ts.TotalMinutes) / 60.0;return hours;}else{TimeSpan ts = dateRestS - dtWork; //午休起- 出差+ 下午上班時間double hours = (ts.TotalMinutes) / 60.0;return hours + HoursPM;}}else{//大於午休時間if (dtWork > dateRestE){TimeSpan ts = dtWork - dateRestE; // 出差時-午休訖+ 上午上班時間double hours = (ts.TotalMinutes) / 60.0;return hours + HoursAM;}else{TimeSpan ts = dtWork - dateWorkS; //午休起- 出差時double hours = (ts.TotalMinutes) / 60.0;return hours;}}}#endregion#region CountWorkDayHours 計算工作小時(同一天)///<summary>///計算工作小時(同一天)///</summary>///<param name="dtWorkS">起始</param>///<param name="dtWorkE">截止</param>///<returns></returns>public double CountWorkDayHours(DateTime dtWorkS, DateTime dtWorkE) { //2008/03/06:Joseph:A01-970305008:時間計算有誤,判斷是否小於午休時間或大於午休結束時間if ((dtWorkS <= dateRestS && dtWorkE <= dateRestS) ||(dtWorkS >= dateRestE && dtWorkE >= dateRestE)){TimeSpan ts = dtWorkE - dtWorkS; //出差訖- 出差起double hours = (ts.TotalMinutes) / 60.0;return hours;}else{TimeSpan tsS = dateRestS - dtWorkS; //午休起- 出差起double hoursS = (tsS.TotalMinutes) / 60.0;TimeSpan tsE = dtWorkE - dateRestE; //出差訖- 午休訖double hoursE = (tsE.TotalMinutes) / 60.0;if (hoursE > 0) { return (hoursS + hoursE); }else {return hoursS;}}}#endregion}#endregion(步骤2)接着在代码中找到如下方法.protected override void settingClientFunction();在里面添加下列代码:(注意加粗部分的代码,一定要替换成对应控件的名称.)//起始時間//this.startdate.HtmImg.Attributes.Add("onclick", "if( validateDate() ){ computeDate(); }");this.startdate.TxtInput.Attributes.Add("onblur", "if( validateDate() ){ computeDate(); }");this.startdate.TxtInput.Attributes.Add("onchange", "AddtoHash('" +startdate.TxtInput.ClientID + "')");//截止時間//this.enddate.HtmImg.Attributes.Add("onclick", "if( validateDate() ){ computeDate(); }");this.enddate.TxtInput.Attributes.Add("onblur", "if( validateDate() ){ computeDate(); }");this.enddate.TxtInput.Attributes.Add("onchange", "AddtoHash('"+ enddate.TxtInput.ClientID + "')");(步骤3)最后在同名的脚本文件中添加以下代码:(同样,注意加粗部分代码,需要替换成相应的值.)function validateDate() {var errorMsg = '';var dateS =document.getElementById("MasterPage_MasterPageContent_startdate_txt").value;var dateE =document.getElementById("MasterPage_MasterPageContent_enddate_txt").value;var userId =document.getElementById("MasterPage_MasterPageContent_applicant_txt").value;// var langType =document.getElementById('MasterPage$MasterPageContent$hiddenLanguageType').value;if (dateS == "" || dateE == "") {return false;}if (dateS != '' && dateE != '') {//截至日期需要大于起始日期.if (dateS > dateE) {errorMsg = getI18NForSpecial('FD', 'STD002', 'MSG002','../../_Common/PlatFormUtil/KernelPage/I18N/I18NForJs.aspx')//var Edate =.dsc.easyflowDotNet.forms.OAHR003.GetEndDate(dateS).value//document.getElementById("MasterPage_MasterPageContent_enddate_txt").value = Edate;//alert(errorMsg);//return true}else {errorMsg =.dsc.easyflowDotNet.forms.OAHR003.ValidateInputDate(dateS, dateE).value;}}if (errorMsg != '') {alert(errorMsg);document.getElementById("MasterPage_MasterPageContent_leavedays_txt").value = ''; document.getElementById("MasterPage_MasterPageContent_leavehours_txt").value = '';return false;}return true;}//計算天數function computeDate() {//开始时间var dateS =document.getElementById("MasterPage_MasterPageContent_startdate_txt").value;//结束时间var dateE =document.getElementById("MasterPage_MasterPageContent_enddate_txt").value;//员工IDvar userId =document.getElementById("MasterPage_MasterPageContent_applicant_txt").value;var result =.dsc.easyflowDotNet.forms.OAHR003.CountBusinessLeaveHours(dateS, dateE, userId).value.split('@');document.getElementById("MasterPage_MasterPageContent_leavedays_txt").value = result[0];document.getElementById("MasterPage_MasterPageContent_leavehours_txt").value =result[1]; }。

相关文档
最新文档