以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]每月最后一周周六下午14:00执行一次计划怎么写呢 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=118270) |
|
-- 作者:laipiwen -- 发布时间:2018/4/27 17:47:00 -- [求助]每月最后一周周六下午14:00执行一次计划怎么写呢 每月最后一周周六下午14:00执行一次计划怎么写? 隔周周三下午14:00 呢? 看了论坛上类似帖子,还是没有思路 请老师帮忙看看!
|
|
-- 作者:有点甜 -- 发布时间:2018/4/27 18:01:00 -- 1、如果要计划执行,你必须在那个时候程序是打开的状态才行;
2、建议做成这种方式:做一个计划表,把需要执行操作的时间点,都保存在表格里面;做一个计划任务,搜索小于当前时间没有执行的行,执行对应的代码,即可;执行完以后,标记为已执行。 |
|
-- 作者:laipiwen -- 发布时间:2018/4/27 20:53:00 -- 以下是引用有点甜在2018/4/27 18:01:00的发言:
1、如果要计划执行,你必须在那个时候程序是打开的状态才行;
2、建议做成这种方式:做一个计划表,把需要执行操作的时间点,都保存在表格里面;做一个计划任务,搜索小于当前时间没有执行的行,执行对应的代码,即可;执行完以后,标记为已执行。 这样的话关键是需要手动填写保存时间点,能否像这样用语句自动执行? static d1 As Date = Date.today.AddDays(-1) [此贴子已经被作者于2018/4/27 20:54:04编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2018/4/27 21:06:00 -- 可以的,判断好时间即可,类似 \'如果是凌晨3点,则进行一些一天才处理一次的任务 Dim dNow As Date = Date.Now If dNow.Hour = 3 AndAlso Format(s_TaskDate,"yyyyMMddHH") <> Format(dNow,"yyyyMMddHH") Then s_TaskDate = Date.Now s_Tasking = True Functions.Execute("LogText","开始一天才处理一次的任务") \'每月28日才重置默认的选择题序 If dNow.Day = 28 Then Functions.Execute("LogText","月28日开始设置默认的选择题序,T_SetDefaultRandSelectionTask") End If \'每周四 才重置本周已做题的选择题序,根据实际使用频率再调整 If dNow.DayOfWeek = 4 Then Functions.Execute("LogText","周4开始设置已做题的用户的选择题序,T_SetUserSelectionTasks") End If End If s_Tasking = False |
|
-- 作者:laipiwen -- 发布时间:2018/4/27 21:18:00 -- 以下是引用有点蓝在2018/4/27 21:06:00的发言:
可以的,判断好时间即可,类似 \'如果是凌晨3点,则进行一些一天才处理一次的任务 Dim dNow As Date = Date.Now If dNow.Hour = 3 AndAlso Format(s_TaskDate,"yyyyMMddHH") <> Format(dNow,"yyyyMMddHH") Then s_TaskDate = Date.Now s_Tasking = True Functions.Execute("LogText","开始一天才处理一次的任务") \'每月28日才重置默认的选择题序 If dNow.Day = 28 Then Functions.Execute("LogText","月28日开始设置默认的选择题序,T_SetDefaultRandSelectionTask") End If \'每周四 才重置本周已做题的选择题序,根据实际使用频率再调整 If dNow.DayOfWeek = 4 Then Functions.Execute("LogText","周4开始设置已做题的用户的选择题序,T_SetUserSelectionTasks") End If End If s_Tasking = False 感谢耐心解答,我还是不太明白针对我这个具体的需求该怎么写代码?
[此贴子已经被作者于2018/4/27 21:22:51编辑过]
|
|
-- 作者:有点蓝 -- 发布时间:2018/4/27 21:45:00 -- 获取每月最后一天是星期几,往前推出周六。 隔周使用变量计数,计数为2执行,然后清零重新计数
|
|
-- 作者:laipiwen -- 发布时间:2018/4/28 9:33:00 -- 以下是引用有点蓝在2018/4/27 21:45:00的发言:
获取每月最后一天是星期几,往前推出周六。 隔周使用变量计数,计数为2执行,然后清零重新计数 static d1 As Date = Date.today.AddDays(-1) static i As Integer = 1 If d1 <> Date.today AndAlso Date.Now.Hour = 14 AndAlso Date.today.DayOfWeek = 3 Then i = i + 1 If i = 2 d1 = Date.today i = 1 Output.Show(d1) End If End If Output.Show(d1) \'Output.Clear 老师是这样写吗? static d1 As Date = Date.today.AddDays(-1) static i As Integer = 1 Dim m As Integer = Date.today.Month Dim y As Integer = Date.today.Year Dim Days As Integer = Date.DaysInMonth(y,m) Dim LastDay As Date = New Date(y,m,Days) Output.Show(LastDay.DayOfWeek) Output.Show(LastDay) 这里得到最后一天是周几 该怎么样推出那天是周六呢? [此贴子已经被作者于2018/4/28 9:49:20编辑过]
|
|
-- 作者:有点甜 -- 发布时间:2018/4/28 9:52:00 -- Dim m As Integer = Date.today.Month Dim y As Integer = Date.today.Year Dim d As Date = new Date(y, m, 1) d = d.AddMonths(1).AddDays(-1) Do While True If d.DayOfWeek = 6 Then Exit do End If d = d.AddDays(-1) Loop msgbox(d) |
|
-- 作者:laipiwen -- 发布时间:2018/4/29 9:04:00 -- 以下是引用有点甜在2018/4/28 9:52:00的发言: Dim m As Integer = Date.today.Month Dim y As Integer = Date.today.Year Dim d As Date = new Date(y, m, 1) d = d.AddMonths(1).AddDays(-1) Do While True If d.DayOfWeek = 6 Then Exit do End If d = d.AddDays(-1) Loop msgbox(d) 太感谢了
|