如何计算每年第n天是星期几

如何计算每年第n天是星期几

先以计算每年的第一天是星期几为例
原理:

1.如果知道公元1年的第1天是星期x,设公元1年的第一天为起始天,那么计算某年的第一天是星期几只需计算出该天是从公元第一天开始数的第几天(等于与起始天的差值f+1),将其除7,得到的商为相差的周数,用取整后f+1(由于有闰年存在,之后解释)减去相差周数*7得到s,若公元一年第一天为星期x,s=0则为星期x-1,s=1则为星期x,s=2则为星期x+1,依次递推
2.闰年有366天,闰年的定义为:凡是年份能够被4整除、且不能被100整除的是闰年;凡是年份能被400整除的也是闰年;除此以外的年份都不是闰年。

算法推理过程:

设某年为y,该年第一天与起始天的差值f-1为(y-1)*365再加上y-1与公元1年之间的闰年数(因为闰年比平年多一天),首先能够被4整除的可能是闰年,总数为(y-1)/4,但被4整除且能被100整除的不是闰年,需减去(y-1)/100(因为被100整除一定能被4整除,这部分多加了),被400整除的是闰年,需加上(y-1)/400(因为被400整除一定能被100整除,这部分多减了)
那么f=

f=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+1

若其中没有闰年,后面三项会出现小数,所以应把求得的f取整
那么

s=int(f)-int(f/7)*7

公元1年第一天为星期一
s=0为星期日
s=1为星期一

以此类推

计算第n天只需将f最后项的+1改为+n即可

代码(按钮控件):
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim y, k, s As Integer
        Dim f As Double

        y = TextBox1.Text
        f = ((y - 1) + (y - 1) / 4 - (y - 1) / 100 + (y - 1) / 400) + 1
        k = Int(f) - Int(f / 7) * 7
        Select Case k
            Case 0
                TextBox2.Text = "星期日"
            Case 1
                TextBox2.Text = "星期一"
            Case 2
                TextBox2.Text = "星期二"
            Case 3
                TextBox2.Text = "星期三"
            Case 4
                TextBox2.Text = "星期四"
            Case 5
                TextBox2.Text = "星期五"
            Case 6
                TextBox2.Text = "星期六"
        End Select

    End Sub
效果:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

happy19991001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值