每年在特定日期和月份触发警报

时间:2014-04-14 18:34:36

标签: vb.net

我想创建某种程序,让我想起某些日期(等等) 例如

如果是IsDate(2014年12月6日)那么

msgbox(“今天是你的生日”)

ENDIF

所以有可能以某种方式编写代码来每年执行此操作而无需编写10-20行代码..(像这样)

如果IsDate(12/6 / 2015)那么

如果是IsDate(2016年6月6日)那么

如果是IsDate(2017年6月12日)那么

所以,同一天和月,但不同年份:D

1 个答案:

答案 0 :(得分:4)

Date在当天和当月拥有属性。您可以比较“闹钟日期”的.Day.Month属性以及当前日期,看看它是否应该触发。

MSDN上的文档提供了更多信息。 http://msdn.microsoft.com/en-us/library/system.datetime.date(v=vs.110).aspx

示例:

    Dim alarmDate As Date = #3/11/2010#
    Dim currentDate As Date = Date.Now
    If alarmDate.Day = currentDate.Day AndAlso alarmDate.Month = currentDate.Month Then
        'Do Something here
    End If

您还可以使用扩展方法将这一切提升到新的水平(这可能超出了您当前的应用程序需求):

Imports System.Runtime.CompilerServices

Module ExtensionMethods
    <Extension>
    Public Function IsSameMonthAndDayAs(d1 As Date, d2 As Date) As Boolean
        Return d1.Day = d2.Day AndAlso d1.Month = d2.Month
    End Function
End Module

示例:

    Dim d As Date = #1/11/2010#
    If Date.Now.IsSameMonthAndDayAs(d) Then
        'Do something here
    End If

更多

如果要将其转换为功能应用程序,可以创建一个新表单,将Timer组件放到其上,并将其间隔设置为86400000(一天内的毫秒数)。启用计时器并将我的代码放入其Tick事件中。计时器每天会发射一次并比较两个日期。 注意这不是最好(甚至非常好)的方式。这只是一个如何使用它的例子。