设为首页收藏本站淘宝杂货铺

从F到0 - From F to 0

 找回密码
 加入我们
搜索
查看: 14208|回复: 39
收起左侧

易语言年月日算星期终极算法 100年1月1日到9999年12月31日没有1个错误的 纯核心库之作

[复制链接]
发表于 2018-9-18 23:13:44 | 显示全部楼层 |阅读模式
本帖最后由 CNWTEPRG 于 2018-9-18 23:11 编辑

1.png

  1. .版本 2

  2. .程序集 程序集1

  3. .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码


  4. _临时子程序 ()  ' 在初始化代码执行完毕后调用测试代码
  5. 返回 (0)  ' 可以根据您的需要返回任意数值

  6. .子程序 _临时子程序
  7. .局部变量 日期, 日期时间型
  8. .局部变量 系统算的星期, 整数型
  9. .局部变量 本方法算的星期, 整数型

  10. ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
  11. 输出调试文本 (到文本星期 (年月日算星期 (292277026596, 12, 4)))
  12. 输出调试文本 (到文本星期 (年月日算星期 (2222, 2, 22)))
  13. 输出调试文本 (到文本星期 (年月日算星期 (1, 1, 1)))
  14. 输出调试文本 (到文本星期 (年月日算星期 (1111, 11, 11)))
  15. 输出调试文本 (到文本星期 (年月日算星期 (2022, 2, 22)))




  16. 日期 = [100年1月1日]
  17. .循环判断首 ()
  18.     系统算的星期 = 取星期几 (日期)
  19.     本方法算的星期 = 年月日算星期 (取年份 (日期), 取月份 (日期), 取日 (日期))
  20.     .如果 (系统算的星期 = 本方法算的星期)
  21.         .如果真 (取随机数 (0, 10000) = 0)
  22.             输出调试文本 (到文本 (日期) + “ ” + 到文本星期 (本方法算的星期))
  23.         .如果真结束

  24.     .否则
  25.         暂停 ()

  26.     .如果结束
  27.     日期 = 增减时间 (日期, 5, 1)
  28. .循环判断尾 (日期 ≠ [9999年12月31日])


  29. .子程序 年月日算星期, 字节型, 公开, 已知年月日求星期几,星期日为1、星期1为2、以此类推,失败返回0
  30. .参数 年, 长整数型, , 不能为负数 范围:0~9223372036854775807
  31. .参数 月, 字节型
  32. .参数 日, 字节型
  33. .局部变量 年代码, 整数型
  34. .局部变量 月代码, 整数型, , "0"
  35. .局部变量 星期, 字节型

  36. .判断开始 (日期时间是否有效 (年, 月, 日) = 假)
  37.     返回 (0)
  38. .判断 (是否为闰年 (年))
  39.     年代码 = (取元旦星期 (年) + 2) % 7
  40.     月代码 = { 5, 1, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }
  41. .默认
  42.     年代码 = (取元旦星期 (年) + 8) % 7
  43.     月代码 = { 6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }
  44. .判断结束
  45. 星期 = (年代码 + 月代码 [月] + 日) % 7
  46. .如果真 (星期 = 0)
  47.     星期 = 7
  48. .如果真结束
  49. 返回 (星期)

  50. .子程序 是否为闰年, 逻辑型
  51. .参数 年, 长整数型

  52. 返回 (年 % 4 = 0 且 年 % 100 ≠ 0 或 年 % 400 = 0)

  53. .子程序 取年天数, 长整数型
  54. .参数 年, 长整数型

  55. 返回 (年 × 365 + 取闰年数 (年))

  56. .子程序 取元旦星期, 整数型
  57. .参数 年, 长整数型

  58. 返回 ((1 + 取年天数 (年) - 取当前年天数 (年)) % 7)

  59. .子程序 取当前年天数, 整数型
  60. .参数 年, 长整数型

  61. 返回 (选择 (是否为闰年 (年), 366, 365))

  62. .子程序 取闰年数, 长整数型
  63. .参数 年, 长整数型

  64. 返回 (年 \ 4 - 年 \ 100 + 年 \ 400)

  65. .子程序 日期时间是否有效, 逻辑型
  66. .参数 年, 长整数型
  67. .参数 月, 字节型
  68. .参数 日, 字节型
  69. .参数 时, 字节型, 可空
  70. .参数 分, 字节型, 可空
  71. .参数 秒, 字节型, 可空
  72. .局部变量 平年表, 整数型, 静态, "0"
  73. .局部变量 闰年表, 整数型, 静态, "0"

  74. 平年表 = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
  75. 闰年表 = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
  76. .判断开始 (时 > 23 或 分 > 59 或 秒 > 59)
  77.     返回 (假)
  78. .判断 (年 < 0 或 月 < 1 或 日 < 1 或 月 > 12)
  79.     返回 (假)
  80. .默认
  81.     返回 (日 ≤ 选择 (是否为闰年 (年), 闰年表 [月], 平年表 [月]))
  82. .判断结束


  83. .子程序 到文本星期, 文本型
  84. .参数 星期, 字节型
  85. .局部变量 文本星期, 文本型, , "0"

  86. .如果真 (星期 < 1 或 星期 > 7)
  87.     返回 (“”)
  88. .如果真结束
  89. 文本星期 = { “星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六” }
  90. 返回 (文本星期 [星期])
复制代码

评分

1

查看全部评分

发表于 2018-10-13 00:06:17 | 显示全部楼层

回帖奖励 +8

HNY 发表于 2018-10-1 19:49
到时候年月日进位制度保不准啥时候修改了这个也没用了。

至少几千几万年吧,据说闰秒啥的就出来了...
发表于 2023-1-30 19:45:10 | 显示全部楼层
Hello 发表于 2021-9-24 22:23
1582年10月6日是星期几???

建议你网上搜索。
发表于 2018-10-1 19:49:10 | 显示全部楼层

回帖奖励 +8

到时候年月日进位制度保不准啥时候修改了这个也没用了。
发表于 2018-9-19 09:00:07 | 显示全部楼层

回帖奖励 +8

这个必须得顶
发表于 2018-9-19 23:26:04 | 显示全部楼层

回帖奖励 +8

本帖最后由 1心1亿 于 2018-9-19 23:28 编辑

这个绝对6,比别的都好用。
发表于 2018-9-20 10:01:26 | 显示全部楼层
来瞅瞅咋整的
发表于 2018-9-21 10:34:19 | 显示全部楼层

回帖奖励 +8

66666666666
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|手机版|Archiver|从F到0 ( 蒙ICP备17002595号-1 )
蒙公网安备15010402000325号

腾讯云安全认证

GMT+8, 2024-3-19 11:39 , Processed in 0.515029 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表