首页 > 编程语言 >算法--给定日期求星期几

算法--给定日期求星期几

时间:2023-03-27 19:35:12浏览次数:50  
标签:__ name -- month 算法 weekday year 给定日期

问题:给定日期求星期几。

答:利用蔡勒公式(Zeller's congruence)

h = (q + (26 * (m + 1)) // 10 + k + k // 4 + j // 4 + 5 * j) % 7

 

  • q 是月中的某一天(日期)
  • m 是月份(3 表示 3 月,4 表示 4 月,以此类推)
  • k 是年份的最后两位数
  • j 是年份的前两位数

 

 

Python代码示例:

def get_weekday(date_string):
    year, month, day = [int(x) for x in date_string.split('-')]
    if month < 3:
        month += 12
        year -= 1
    K = year % 100   # 年份的后两位
    J = year // 100  # 年份的前两位
    q = day       # 月中的某一天
    m = month      # 月份
    h = (q + 13*(m+1)//5 + K + K//4 + J//4 + 5*J) % 7
    weekday_num = (h + 5) % 7  # 转换成0~6表示星期几
    weekday_name = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday','Saturday', 'Sunday' ][weekday_num]
    return weekday_name

if __name__ == '__main__':
    res = get_weekday("2023-06-01")
    print(res)

 

 

参考资料:

维基百科

掘金

博客园

 

 

标签:__,name,--,month,算法,weekday,year,给定日期
From: https://www.cnblogs.com/liqi175/p/17262586.html

相关文章

  • pom 创库
    1,spring和hibernate要哪些包,这个要LZ自己上网查了,这里说不清楚.2,建立的仓库可以用APACHE来发布一个,然后在POM.XML输入,例如.<repositories><repository><id>s......
  • Winform/Csharp中使用Linq的Where条件筛选、Select字段映射(左外连接并设置无匹配时默
    场景Java8新特性-Stream对集合进行操作的常用API:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126070657上面讲的是在Java中使用Stream中对集合的常用操......
  • js获取项目根路径
    js获取项目根路径 当js作为文件引入的时候,${pageContext.request.contextPath}不可以作为获取项目的根路径,因此只能用js来获取项目的根路径。   //js......
  • 微信开发者工具:配置模拟器取消静音/静音(Stable 1.06.2303060)
    一,如何给微信开发者工具取消静音?1,点击模拟操作按钮  2,从菜单中选择静音->取消静音  然后就可以播放声音文件了说明:刘宏缔的架构森林是一个专注架构的博客,地......
  • 我快走了
         实习快半年了,这半年依旧拼了命的工作学习,在学校、家乡、公司之间来回。这半年,只休息过7天,其中2天是体检,2天是在上周末,剩下的3天是清明节。生活其实就是奋斗和......
  • Python:str.casefold()的用法
    casefold()是Python中字符串对象的一个方法,用于将字符串中的所有字母字符转换为小写,并处理某些特殊字符(如特定语言的重音符号)以确保正确的比较。与lower()方法不同的......
  • JS代码判断手机访问2
    //ifthemodiledevice,redicttothemodilepagevaruserAgentInfo=navigator.userAgent.toLowerCase();varmurl="${pageContext.request.contextPath}/NewFile......
  • jpa修改操作执行完了,也没报错,但是数据没有进行修改
    查询操作正常、修改就不生效看一下是不是重新创建了一个新的事务、导致数据更新了没有进行事务提交@Primary@Bean(name=TRANSACTION_MANAGER_NAME)public......
  • android实现多线程基础
    //创建线程类classMythreadextendsThread{@Overridepublicvoidrun(){//定义行为}}//实例化线程类MyThreadmt=newMyThread(“线程名称”);///......
  • JS代码判断手机访问
    利用百度SiteApp的代码判断手机访问自动转到博客手机版页面 <scriptsrc="http://siteapp.baidu.com/static/webappservice/uaredirect.js"type="text/jav......