多语言展示
当前在线:1975今日阅读:58今日分享:42

vb获取当天的公历节日并显示倒计时

我们可以用vb获取当天是否有相关的公历节日,如果没有则进行最近的节日倒计时
工具/原料
1

VB环境、windows环境

2

vb编译器

方法/步骤
1

辅助函数:获取某月第几个星期几:'判断某月的第几个星期几,实例:getweek(2016,9,2,0),表示2016年9月的第二个星期日的日期是多少Function getweek(year As Integer, yue As Integer, num As Integer, week As Integer) As StringDim day As String '月份的天数For I = 1 To 7If Weekday(year & '-' & yue & '-' & I) - 1 = week Thenday = I '第1个星期几的日期End IfNext IFor I = 1 To num - 1day = day + 7 '第num个星期几的日期Next I'修正,防止出现如32号的错误信息Select Case yueCase 1, 3, 5, 7, 8, 10, 12 '31天的月数If day > 31 Thengetweek = ''Elsegetweek = Format(year & '-' & yue & '-' & day, 'yyyy-mm-dd')End IfCase 4, 6, 9, 11 '30天的月数If day > 30 Thengetweek = ''Elsegetweek = Format(year & '-' & yue & '-' & day, 'yyyy-mm-dd')End IfCase 2 '平闰月Dim temp As Integertemp = 28If year Mod 100 = 0 And year Mod 400 = 0 Thentemp = 29End IfIf year Mod 100 <> 0 And year Mod 4 = 0 Thentemp = 29End IfIf day > temp Thengetweek = ''Elsegetweek = Format(year & '-' & yue & '-' & day, 'yyyy-mm-dd')End IfEnd SelectEnd Function

2

主要函数:'应用:xqjr(2016,10,1,'1')Function xqjr(myyear As Integer, month As Integer, day As Integer, myms As String) As String'myms:0表示返回节日或者空;1表示返回节日或者距离节日多少天Dim riqi As StringDim tempriqi(9 To 2000) As String, s As String, j As Integerj = 9riqi = Format(myyear & '-' & month & '-' & day, 'yyyy-mm-dd')Dim tsjr(1 To 500) As String '节日日期Dim jierimc(1 To 500) As String '节日名称'以下为特殊节日,某月的第几个星期几的节日tsjr(1) = getweek(myyear, 11, 4, 4) '感恩节tsjr(2) = getweek(myyear, 5, 2, 0) '母亲节tsjr(3) = getweek(myyear, 6, 3, 0) '父亲节tsjr(4) = getweek(myyear, 9, 3, 2) '国际和平日tsjr(5) = getweek(myyear, 9, 4, 0) '国际聋人节tsjr(6) = getweek(myyear, 5, 3, 0) '全国助残节tsjr(7) = getweek(myyear, 9, 3, 6) '全国国防教育日tsjr(8) = getweek(myyear, 10, 2, 3) '国际减轻自然灾害jrmc = Array('感恩节', '母亲节', '父亲节', '国际和平日', '国际聋人节', '全国助残节', '全国国防教育日', '国际减轻自然灾害')For I = 1 To 8 '将特殊节日名称正规化jierimc(I) = jrmc(I - 1)Next IIf Dir(App.Path & '/festival.txt') <> '' Then '加载文件中更多节日信息Open App.Path & '/festival.txt' For Input As #1Do While Not EOF(1)Line Input #1, sIf s <> '' And Left(s, 1) = '&' Thentempriqi(j) = Right(s, Len(s) - 1)j = j + 1End IfLoopClose #1Dim tempyue As String, tempri As String, tempjieri As String '解读节日数据信息Dim t(1 To 3) As IntegerFor I = 9 To jIf InStr(tempriqi(I), '月') <> 0 And InStr(tempriqi(I), '日') <> 0 And InStr(tempriqi(I), '-') <> 0 Thent(1) = InStr(tempriqi(I), '月')t(2) = InStr(tempriqi(I), '日')t(3) = InStr(tempriqi(I), '-')tempyue = Left(tempriqi(I), t(1) - 1)tempri = Mid(tempriqi(I), t(1) + 1, t(2) - t(1) - 1)tempjieri = Right(tempriqi(I), Len(tempriqi(I)) - t(3))tsjr(I) = Format(myyear & '-' & tempyue & '-' & tempri, 'yyyy-mm-dd')jierimc(I) = tempjieriEnd IfNext IEnd If'完成加载所有节日信息'此时注释:tsjr(1 to 500) 为节日日期;jierimc(1 To 500) 为对应节日名称Select Case mymsCase '0' '模式0,表示结果只返回节日或者空xqjr = ''For I = 1 To jIf riqi = tsjr(I) Thenxqjr = jierimc(I)Exit FunctionEnd IfNext ICase '1' '模式1,表示提示距离最近的节日有多少天Dim min As Integer, myday As IntegerDim sjc(1 To 500) As IntegerFor I = 1 To j - 1                 '计算所有节日的时间差If DateDiff('d', riqi, tsjr(I)) >= 0 Thensjc(I) = DateDiff('d', riqi, tsjr(I))Elsesjc(I) = 365End IfNext Imin = sjc(1)For I = 1 To j - 1              '找出最小时间差的节日If min >= sjc(I) Thenmin = sjc(I)myday = IEnd IfNext ISelect Case min      '时间差(天数)判断Case 0xqjr = '今天是' & jierimc(myday)Case 1xqjr = '明天为' & jierimc(myday)Case 2xqjr = '后天为' & jierimc(myday)Case Elsexqjr = '距离' & jierimc(myday) & '还有' & min & '天'End SelectEnd SelectEnd Function

3

一.上述函数没有任何文件的前提下,只能显示八个特殊的节日,如感恩节、父亲节等二.如果需要添加更多的节日,请在程序目录添加festival.txt文件,里面存放更多的节日信息格式如:&1月1日-元旦三.附录节日信息:&1月1日-元旦&2月2日-世界湿地日&2月14日-情人节&3月3日-全国爱耳日 &3月5日-青年志愿者服务日 &3月8日-国际妇女节&3月9日-保护母亲河日 &3月12日-中国植树节&3月14日-白色情人节&3月14日-国际警察日&3月15日-世界消费者权益日&3月21日-世界森林日&3月22日-世界水日 &3月23日-世界气象日&3月24日-世界防治结核病日&4月1日-愚人节&4月5日-清明节&4月7日-世界卫生日 &4月22日-世界地球日&4月26日-世界知识产权日&5月1日-国际劳动节&5月3日-世界哮喘日&5月4日-中国青年节&5月8日-世界红十字日&5月12日-国际护士节&5月15日-国际家庭日&5月17日-世界电信日&5月20日-全国学生营养日 &5月23日-国际牛奶日&5月31日-世界无烟日 &6月1日-国际儿童节&6月5日-世界环境日&6月6日-全国爱眼日 &6月17日-世界防治荒漠化和干旱日&6月23日-国际奥林匹克日&6月25日-全国土地日 &6月26日-国际禁毒日&7月1日-中国共产党诞生日&7月7日-中国人民抗日战争纪念日 &7月11日-世界人口日 &8月1日-中国人民解放军建军节 &8月12日-国际青年节&9月8日-国际扫盲日&9月10日-中国教师节&9月16日-中国脑健康日 &9月20日-全国爱牙日 &9月21日-世界停火日 &9月27日-世界旅游日&10月1日-国庆节&10月4日-世界动物日&10月5日-世界教师日 &10月8日-全国高血压日 &10月9日-世界邮政日&10月10日-世界精神卫生日&10月14日-世界标准日 &10月15日-国际盲人节&10月16日-世界粮食日 &10月17日-国际消除贫困日&10月24日-世界发展新闻日&10月28日-中国男性健康日 &10月29日-国际生物多样性日&10月31日-万圣节&11月8日-中国记者节 &11月9日-消防宣传日 &11月14日-世界糖尿病日 &11月17日-国际大学生节 &11月25日-国际消除对妇女的暴力日&12月1日-世界爱滋病日&12月3日-世界残疾人日 &12月4日-全国法制宣传日 &12月9日-世界足球日&12月24日-平安夜&12月25日-圣诞节&12月29日-国际生物多样性日

注意事项
1

关于调用1:举例:Text.Text=xqjr(2016,3,1,'1'),则显示“举例妇女节还有7天”

2

关于调用2:举例:Text.Text=xqjr(2016,3,1,'0'),则显示空白信息

推荐信息