VB.net创建日期Killswitch(比较两个日期)

时间:2018-12-28 14:37:09

标签: vb.net if-statement

我想在我的应用程序中基于日期实现一个killswitch,以便它在某个时间之前停止工作。因此我想出了日期(例如2019年2月1日)。一旦系统的日期(运行我的应用程序的日期)大于Killswitch的日期,我希望它停止工作。我尝试过:

If Today.Date.toString() >= "02/01/2019" Then
End
Else
...

那没有用。我的问题是每台计算机上的日期格式都不同,有些具有 MM / dd / YYYY ,有些具有 dd / MM / YYYY ,而某些 YYYY / MM / dd 。仍然可以将所有日期转换为通用格式并进行比较吗?

4 个答案:

答案 0 :(得分:2)

不要对您的日期进行硬编码;那么格式就不会成为问题。而是使用DateTime类的构造函数来创建具有特定年份,月份和日期的终止目标:

Dim targetDT As New DateTime(2019, 2, 1)
If DateTime.Today > targetDT Then
    ' ... do something in here ...
End If

答案 1 :(得分:0)

如果所有日期都是标准格式,则可以使用DateTime.Parse。届时,您将比较两个DateTime值,然后大于或等于。

If DateTime.Now >= DateTime.Parse("02/01/2019") Then
    Environment.End
End If

为了手动解析日期,您将需要知道日期所采用的格式,因为您需要根据它的片段来创建DateTime对象。这是一个示例:

Dim strDate As String = "12/28/2018"
Dim year As Integer = Integer.Parse(strDate.Substring(6, 4))
Dim month As Integer = Integer.Parse(strDate.Substring(0, 2))
Dim day As Integer = Integer.Parse(strDate.Substring(3, 2))
Dim d = New DateTime(year, month, day)

答案 2 :(得分:0)

您可以使用此

    Dim currentDate As DateTime = DateTime.Now
    If currentDate.Month >= 2 And currentDate.Day >= 1 And currentDate.Year >= 2019
          End
    End If

答案 3 :(得分:0)

另一种方法,在线注释和解释。

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    If DateTime.Now > ExpireDate Then
        MessageBox.Show("Your trial period has expired")
        Close()
    End If
End Sub

Private ExpireDate As Date

Private Sub OPCode3()
    'run once at first startup
    'Store As DateTime, then you can compare DateTime withour converserion or parsing
    ExpireDate = DateTime.Now.AddMonths(3)
End Sub