本帖最后由 CNWTEPRG 于 2018-9-18 23:11 编辑
- .版本 2
- .程序集 程序集1
- .子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
- _临时子程序 () ' 在初始化代码执行完毕后调用测试代码
- 返回 (0) ' 可以根据您的需要返回任意数值
- .子程序 _临时子程序
- .局部变量 日期, 日期时间型
- .局部变量 系统算的星期, 整数型
- .局部变量 本方法算的星期, 整数型
- ' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
- 输出调试文本 (到文本星期 (年月日算星期 (292277026596, 12, 4)))
- 输出调试文本 (到文本星期 (年月日算星期 (2222, 2, 22)))
- 输出调试文本 (到文本星期 (年月日算星期 (1, 1, 1)))
- 输出调试文本 (到文本星期 (年月日算星期 (1111, 11, 11)))
- 输出调试文本 (到文本星期 (年月日算星期 (2022, 2, 22)))
- 日期 = [100年1月1日]
- .循环判断首 ()
- 系统算的星期 = 取星期几 (日期)
- 本方法算的星期 = 年月日算星期 (取年份 (日期), 取月份 (日期), 取日 (日期))
- .如果 (系统算的星期 = 本方法算的星期)
- .如果真 (取随机数 (0, 10000) = 0)
- 输出调试文本 (到文本 (日期) + “ ” + 到文本星期 (本方法算的星期))
- .如果真结束
- .否则
- 暂停 ()
- .如果结束
- 日期 = 增减时间 (日期, 5, 1)
- .循环判断尾 (日期 ≠ [9999年12月31日])
- .子程序 年月日算星期, 字节型, 公开, 已知年月日求星期几,星期日为1、星期1为2、以此类推,失败返回0
- .参数 年, 长整数型, , 不能为负数 范围:0~9223372036854775807
- .参数 月, 字节型
- .参数 日, 字节型
- .局部变量 年代码, 整数型
- .局部变量 月代码, 整数型, , "0"
- .局部变量 星期, 字节型
- .判断开始 (日期时间是否有效 (年, 月, 日) = 假)
- 返回 (0)
- .判断 (是否为闰年 (年))
- 年代码 = (取元旦星期 (年) + 2) % 7
- 月代码 = { 5, 1, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }
- .默认
- 年代码 = (取元旦星期 (年) + 8) % 7
- 月代码 = { 6, 2, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4 }
- .判断结束
- 星期 = (年代码 + 月代码 [月] + 日) % 7
- .如果真 (星期 = 0)
- 星期 = 7
- .如果真结束
- 返回 (星期)
- .子程序 是否为闰年, 逻辑型
- .参数 年, 长整数型
- 返回 (年 % 4 = 0 且 年 % 100 ≠ 0 或 年 % 400 = 0)
- .子程序 取年天数, 长整数型
- .参数 年, 长整数型
- 返回 (年 × 365 + 取闰年数 (年))
- .子程序 取元旦星期, 整数型
- .参数 年, 长整数型
- 返回 ((1 + 取年天数 (年) - 取当前年天数 (年)) % 7)
- .子程序 取当前年天数, 整数型
- .参数 年, 长整数型
- 返回 (选择 (是否为闰年 (年), 366, 365))
- .子程序 取闰年数, 长整数型
- .参数 年, 长整数型
- 返回 (年 \ 4 - 年 \ 100 + 年 \ 400)
- .子程序 日期时间是否有效, 逻辑型
- .参数 年, 长整数型
- .参数 月, 字节型
- .参数 日, 字节型
- .参数 时, 字节型, 可空
- .参数 分, 字节型, 可空
- .参数 秒, 字节型, 可空
- .局部变量 平年表, 整数型, 静态, "0"
- .局部变量 闰年表, 整数型, 静态, "0"
- 平年表 = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
- 闰年表 = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
- .判断开始 (时 > 23 或 分 > 59 或 秒 > 59)
- 返回 (假)
- .判断 (年 < 0 或 月 < 1 或 日 < 1 或 月 > 12)
- 返回 (假)
- .默认
- 返回 (日 ≤ 选择 (是否为闰年 (年), 闰年表 [月], 平年表 [月]))
- .判断结束
- .子程序 到文本星期, 文本型
- .参数 星期, 字节型
- .局部变量 文本星期, 文本型, , "0"
- .如果真 (星期 < 1 或 星期 > 7)
- 返回 (“”)
- .如果真结束
- 文本星期 = { “星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六” }
- 返回 (文本星期 [星期])
复制代码
|