Foxtable(狐表)用户栏目专家坐堂 → [求助]每月最后一周周六下午14:00执行一次计划怎么写呢


  共有2821人关注过本帖树形打印复制链接

主题:[求助]每月最后一周周六下午14:00执行一次计划怎么写呢

帅哥哟,离线,有人找我吗?
laipiwen
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:382 积分:2882 威望:0 精华:0 注册:2015/4/29 11:50:00
[求助]每月最后一周周六下午14:00执行一次计划怎么写呢  发帖心情 Post By:2018/4/27 17:47:00 [只看该作者]

每月最后一周周六下午14:00执行一次计划怎么写?
隔周周三下午14:00  呢?
看了论坛上类似帖子,还是没有思路 请老师帮忙看看!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/27 18:01:00 [只看该作者]

1、如果要计划执行,你必须在那个时候程序是打开的状态才行;

 

2、建议做成这种方式:做一个计划表,把需要执行操作的时间点,都保存在表格里面;做一个计划任务,搜索小于当前时间没有执行的行,执行对应的代码,即可;执行完以后,标记为已执行。


 回到顶部
帅哥哟,离线,有人找我吗?
laipiwen
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:382 积分:2882 威望:0 精华:0 注册:2015/4/29 11:50:00
  发帖心情 Post By:2018/4/27 20:53:00 [只看该作者]

以下是引用有点甜在2018/4/27 18:01:00的发言:

1、如果要计划执行,你必须在那个时候程序是打开的状态才行;

 

2、建议做成这种方式:做一个计划表,把需要执行操作的时间点,都保存在表格里面;做一个计划任务,搜索小于当前时间没有执行的行,执行对应的代码,即可;执行完以后,标记为已执行。


这样的话关键是需要手动填写保存时间点,能否像这样用语句自动执行?

static d1 As Date = Date.today.AddDays(-1)
If d1 <> Date.today AndAlso Date.Now.Hour = 20    Then
d1 = Date.today

[此贴子已经被作者于2018/4/27 20:54:04编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:382 积分:2882 威望:0 精华:0 注册:2015/4/29 11:50:00
  发帖心情 Post By: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

感谢耐心解答,我还是不太明白针对我这个具体的需求该怎么写代码?
每月最后一周周六下午14:00 
隔周周三下午14:00   

这里面 每周六 每周三 都是很好判断,每月最后一周   和隔周 真不知道代码怎么判断

[此贴子已经被作者于2018/4/27 21:22:51编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/4/27 21:45:00 [只看该作者]

获取每月最后一天是星期几,往前推出周六。

隔周使用变量计数,计数为2执行,然后清零重新计数

 回到顶部
帅哥哟,离线,有人找我吗?
laipiwen
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:382 积分:2882 威望:0 精华:0 注册:2015/4/29 11:50:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:382 积分:2882 威望:0 精华:0 注册:2015/4/29 11:50:00
  发帖心情 Post By: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)
太感谢了


 回到顶部