2014-06-10 109 views
-2

我一直在尋找各種主題,但沒有找到答案,所以我問: 是否有可能檢測到VB中的一天之間的差異?我的意思是,我在星期一運行該程序,他今天對我說的是星期一,並且是日差(昨天是星期天),變量將被重置,因此每天都會使變量有效一天。VB檢測天數之間的差異

+0

當然,你可以存儲在數據庫中的最後執行日期,文件,應用程序的設置等。您嘗試過什麼,或者您有哪些問題?您是否需要幫助來計算差異或存儲日期?請顯示你已經嘗試過,所以我們可以幫助你更好 – SysDragon

+0

我試圖做的,我想要做的。我描述了我的推理,我有一個可以執行VB腳本的應用程序,我可以在此應用程序商店中設置變量值(當我關閉應用程序並再次運行變量保持值時),但我希望第二天重置此變量,但我可以在設置應用程序中設置24小時後自動變量重置,所以我認爲使用VB腳本來重置變量NEX日。所以當 – john

回答

0

你需要這樣的(不能記住,如果你能在vb.net宣佈今天的日期是這樣,但代碼的其餘部分應該是聲音):

dim tDay as datetime = now() 
Select Case tDay.DayOfWeek 
Case DayOfWeek.Monday 
'Its Monday 
Case DayOfWeek.Tuesday 
'Its Tuesday 
. 
. 
. 
. 
End Select 

其未經測試,但會得到你在右邊線

編輯: 要檢查日期是否已更改並重新分配變量,請將日期和x的變量聲明爲系統設置(My.Settings)。 然後,從那裏其添加到上述的情況:

Case DayOfWeek.Monday 
If My.Settings.weekDayCheck <> DayOfWeek.Monday Then 
My.Settings.weekDayCheck = DayOfWeek.Monday 
My.Settings.x = 20 
Else 
My.Settings.x = My.Settings.x + 1 
End If 

+0

感謝您的答覆,但這不是我的意思,我想開始後檢測自己編程,這是第二天,所以將刪除變量,如今天上午10點,我添加到變量「x」數字和一個變量「x」= 20,然後在晚上9點再次運行程序並增加一個如此變量的「x」= 21,然後我想讓程序在第二天重置變量,所以當我明天上午10點運行程序,變量「x」= 0再次 – john

+0

實際上,它會工作得很好。現在修改示例來顯示這個 – bmgh1985

0

棘手的問題。這聽起來像你需要在執行之間存儲程序的狀態。您可以通過將數據保存到磁盤來執行此操作,例如通過使用序列化(http://en.wikipedia.org/wiki/Serialization),然後在下次加載程序時對其進行反序列化(如果它存在於磁盤上)。

從這一點上來說,它只是對昨天的日期檢查的情況:

Sub Main 
    Dim storedDate As DateTime = DateTime.Now.AddDays(-1) 
    Console.WriteLine(DateTime.Now.Date.Subtract(storedDate.Date).TotalDays) 
End Sub 

這裏有一個例子:

Sub Main 
    Dim state As new State() 

    StateHelper.SaveState("C:\\Users\\a-h\\test.xml", state) 
    state = StateHelper.LoadState("C:\\Users\\a-h\\test.xml") 

    Console.WriteLine(DateTime.Now.Date.Subtract(state.DateLastAccessed.Date).TotalDays) 
End Sub 

Class StateHelper 
    Shared Sub SaveState (ByVal fileName As String, ByVal state As State) 
     Dim serializer = new XmlSerializer(GetType(State)) 

     Using fs As New FileStream(fileName, FileMode.Create) 
      serializer.Serialize(fs, state) 
     End Using 
    End Sub 

    Shared Function LoadState (ByVal fileName As String) As State 
     If File.Exists(fileName) 
      Dim serializer = new XmlSerializer(GetType(State)) 

      Using fs As New FileStream(fileName, FileMode.Open) 
       Return serializer.Deserialize(fs) 
      End Using 
     Else 
      Return Nothing 
     End If 
    End Function 
End Class 

Class State 
    Property DateLastAccessed As DateTime = DateTime.Now 
    Property Name As String = Environment.UserName 
End Class 
+0

仍然不是我正在尋找的安裝程序,所以我有一個應用程序(不是由我創建的),它能夠執行VBA腳本,在變量設置中我可以指定該變量將保留像關閉並再次運行程序變量保持值。)現在我想讓程序中的值保持一天,例如,如果在星期一上午10點運行程序並增加變量的值,以便x = 10,然後在晚上10點再次運行程序,並增加變量它將是x = 11,但是當運行程序星期二在上午10點15分變量x = 0並且增加1 x = 1,我想在一天中保持var – john