为了账号安全,请及时绑定邮箱和手机立即绑定

如何计算给定日期的星期数?

如何计算给定日期的星期数?

猛跑小猪 2019-10-18 14:45:12
如果我有日期,该如何计算该年中该日期的星期数?例如,在2008年,第1周是1月1日至1月6日,第2周是1月7日至13日,因此,如果我的日期是2008年1月10日,那么我的周数将是2。一种算法非常适合我入门,示例代码也将有所帮助-我正在Windows上使用C ++进行开发。
查看完整描述

3 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

伪代码:


int julian = getDayOfYear(myDate)  // Jan 1 = 1, Jan 2 = 2, etc...

int dow = getDayOfWeek(myDate)     // Sun = 0, Mon = 1, etc...

int dowJan1 = getDayOfWeek("1/1/" + thisYear)   // find out first of year's day

// int badWeekNum = (julian / 7) + 1  // Get our week# (wrong!  Don't use this)

int weekNum = ((julian + 6) / 7)   // probably better.  CHECK THIS LINE. (See comments.)

if (dow < dowJan1)                 // adjust for being after Saturday of week #1

    ++weekNum;

return (weekNum)

为了明确起见,此算法假定您按如下方式计算周数:


S  M  T  W  R  F  S

            1  2  3    <-- week #1

4  5  6  7  8  9 10    <-- week #2

[etc.]

getDayOfWeek()和getDayOfYear()是大多数语言中的标准日期对象操作。如果您没有它们,可以在查明星期几之后,从某个已知的日期算起(1970年1月1日是常见的日期)。


如果要实现自己的日期计数例程,请记住,可以被100整除的年份不是 leap年,除非它们也可以被400整除。因此1900不是year年,而2000是leap年。如果您要回到较早的时间工作,则必须弄乱公历日历和朱利安日历等,请参阅Wikipedia上的大量信息。


该链接更详细地讨论了Windows / C ++中的日期/时间功能。


查看完整回答
反对 回复 2019-10-18
  • 3 回答
  • 0 关注
  • 741 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信