根据数组输出日期

时间:2019-11-18 04:44:16

标签: scheduled-tasks autohotkey associative-array

需要帮助。我有一个星期几的关联数组。我对数组知之甚少。每天在下面的数组中都有1或0。我正在尝试输出日期并使用它们来生成任务。我敢肯定这很容易做到,但是我缺乏经验。

  1. 我只想输出具有1的日期,如下面的数组所示。
  2. 第一个任务应在4天之内完成。
  3. 我需要提前3天查看日期,所以如果今天是星期二,而开始日期是星期五,那么星期五任务日期要到星期三才会显示。
Today := A_now       
WeekDays_Array := {Sun: 0, Mon: 0, Tue: 1, Wed: 0, Thu: 1, Fri: 1, Sat: 0}

1 个答案:

答案 0 :(得分:1)

我很确定这是大部分。使用上面的数组的建议是最合理的。

该脚本使用Wkday(即A_Now)作为开始日期,但我认为可以通过将其替换为特定的开始日期来更改

PastDue := []
DueBy := []
;~ Weekday_Array := {Sunday: 0, Monday: 0, Tuesday: 1, Wednesday: 0, Thursday: 1, Friday: 1, Saturday: 0}
Weekday_Array := [1,1,1,1,1,1,1]            ;Represents Sun-Saturday

AssignTask:
FormatTime, WkDay, MyTime, WDay
For i, value in Weekday_Array{
DueDate =
        if (i > WkDay && Value = 1){
            x++
            DueDate += (x), days
            FormatTime, DueDate, % DueDate, MM/dd/yy
            DueBy.InsertAt(i,DueDate)
        }       
        if (i = WkDay && Value = 1){
            FormatTime, DueDate, % A_Now, MM/dd/yy
            DueBy.InsertAt(i,DueDate)
        }       
        if (i < WkDay && Value = 1){
            y--
            Pastdate =
            PastDate += (y) , days
            NewDate := PastDate
            NewDate += 7, days
            FormatTime, PastDate, % PastDate, MM/dd/yy
            FormatTime, NewDate, % NewDate, MM/dd/yy
            PastDue.InsertAt(i,PastDate)
            DueBy.insertAt(i,NewDate)
        }
}

For i, PastDue in PastDue
    PastDueDates .= PastDue "`n"
Sort, PastDueDates
PastDueDates := "Past due dates so far this week `n`n" PastDueDates
MsgBox, 0x1000,, % PastDueDates

For i, DueDate in DueBy
    DueDates .= DueDate "`n"
Sort, DueDates
DueDates := "All upcoming due dates based criteria `n`n" DueDates
MsgBox, 0x1000,, % DueDates
sort, DueDates

FormatTime, xDay1, % A_Now, MM/dd/yy
xDay2 += 1, days
FormatTime, xDay2, % xDay2, MM/dd/yy
xDay3 += 2, days    
FormatTime, xDay3, % xDay3, MM/dd/yy


For i, DueDate in DueBy{
    if (DueDate = xDay1 || DueDate = xDay2 || DueDate = xDay3)
        XDays .= DueDate "`n"
}
xDays := "Only view the next 3 days from today `n`n" xDays
MsgBox, 0x1000,, % xDays
;~ return

*esc::
ExitApp
return