以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 当到期时间已经是本月最后一天后 将这个值赋值到初始时间的时候 自动跨到下一个月呢 以便实现新的到期时间 新的月份 如图中的2021-5-31 执行后 那么应该加上的初始时间就是2021-6 然后到期时间计算为2021-6-30 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=164262) |
-- 作者:cnsjroom -- 发布时间:2021/5/2 17:11:00 -- 当到期时间已经是本月最后一天后 将这个值赋值到初始时间的时候 自动跨到下一个月呢 以便实现新的到期时间 新的月份 如图中的2021-5-31 执行后 那么应该加上的初始时间就是2021-6 然后到期时间计算为2021-6-30 当前运行效果图: 怎么实现当系统时间等于到期时间的时候,运行该时间对应的计划事件后,自动将当前到期时间 赋值到初始时间列,然后重新计算到期时间呢? 以下内容是专门发给有点蓝浏览 新建一按钮 事件代码如下:【初步可以实现当前到期时间赋值到初始时间列 并重新计算到期时间,但是怎么实现 1、当到期时间已经是本月最后一天后 将这个值赋值到初始时间的时候 自动跨到下一个月呢 以便实现新的到期时间 新的月份 如图中的2021-5-31 执行后 那么应该加上的初始时间就是2021-6 然后到期时间计算为2021-6-30 2、如果到期时间已经是初始时间所在的周三,系统时间等于到期时间后,同样将到期时间赋值给初始时间 然后更新到期时间为下一个周三的时间】 For Each dr As DataRow In DataTables("计划事件").DataRows If dr("计划")=True Then If Date.now.Date= dr("到期时间").Date And Date.now.Hour= dr("到期时间").Hour And Date.now.Minute= dr("到期时间").Minute Then dr("初始时间")=dr("到期时间") dr("到期时间")=Nothing DataTables("计划事件").DataCols("周期").RaiseDataColChanged() dr.Save End If End If Next 计划事件表列变化事件代码(计算时间,当有周期、日时候数据计算正常) Select Case e.DataCol.Name Case "周期","分","时","秒" Dim d As Date = Date.now Dim FirstDay As Date = New Date(d.year, d.month,1) \'第一天 Dim LastDay As Date = New Date(d.year, d.month,Date.DaysInMonth(d.year, d.month)) \'最后一天 Dim q As Integer = (Date.Today.Month - 1) \\ 3 + 1 \'计算现在是第几个季度 Dim y As Integer = Date.Today.Year Dim dt1 As New Date(y, 3 * (q - 1) + 1, 1) \'获取本季度的第一天 Dim dt2 As New Date(y, 3 * q, Date.DaysInMonth(y,3 * q)) \'获取本季度的最后一天 If e.DataRow("周期") IsNot Nothing Then If e.DataRow("周期")="每月最后一天" Then e.DataRow("周期时间")= Format(LastDay, "g") End If If e.DataRow("周期")="每月第一天" Then e.DataRow("周期时间")= FirstDay End If If e.DataRow("周期")="本季度第一天" Then e.DataRow("周期时间")= dt1 End If If e.DataRow("周期")="本季度最后一天" Then e.DataRow("周期时间")= dt2 End If \'Else \'e.DataRow("周期时间")=e.DataRow("初始时间") End If e.DataRow("到期时间")=e.DataRow("周期时间").AddSeconds(e.DataRow("时")*60*60+e.DataRow("分")*60+e.DataRow("秒")) Case "分","时","秒","日" Dim w As Integer = Date.Today.DayOfWeek \'算出今天是星期几 Dim w1 As Date = Date.Today.AddDays(-w) \'获取本周的第一天 Dim w2 As Date = Date.Today.AddDays(e.DataRow("日") - w) \'获取本周的最后一天 If e.DataRow("日") IsNot Nothing Then e.DataRow("周期时间")=w2 \'\'Else \'\'e.DataRow("周期时间")=e.DataRow("初始时间") End If e.DataRow("到期时间")=e.DataRow("周期时间").AddSeconds(e.DataRow("时")*60*60+e.DataRow("分")*60+e.DataRow("秒")) End Select [此贴子已经被作者于2021/5/3 1:49:20编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/5 10:26:00 -- 1、月最后一天+1就是下个月的第一天:http://www.foxtable.com/webhelp/topics/0260.htm Dim d As Date = #4/30/2021# Dim d1 As Date = d.AddDays(1) \'加上40天 Output.Show(d1) 重新使用DaysInMonth计算新的一个月的最后一天即可 2、一周7天,这个周三+7就是下个周三,同样参考上面AddDays用法
|