开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

12
返回列表 发新帖
楼主: 承易
收起左侧

[已解决] 公历转农历JS 怎么调用,不懂JS搞不来,哪位懂JS,帮忙看

 关闭 [复制链接]
结帖率:55% (6/11)
发表于 2021-8-16 11:30:41 | 显示全部楼层   重庆市重庆市
用网页_访问吧。我抓到个接口。读取的是json。你解析下就行:请求地址:https://www.iamwawa.cn/home/nongli/ajax。请求参数:
type: solar
year: 2000
month: 2
day: 2
请求类型:post
参数解释:type参数是固定值。year是年。month是月。day是日。
易语言写法:到文本 (编码_Utf8到Ansi (网页_访问_对象 (“https://www.iamwawa.cn/home/nongli/ajax”, 1, “type=solar&year=2000&month=2&day2”, , , , , , , , , , , , , , , , )))
需要精易模块。可将参数改为自己要的数字,这里数字做例子。输出为:
{"status":1,"info":"\u67e5\u8be2\u6210\u529f\uff01","data":{"solar":"2000\u5e742\u67082\u65e5","lunar":"1999\u5e7412\u670827\u65e5  \u5df1\u536f\u5e74\u814a\u6708\u5eff\u4e03   ","animal":"\u5154","lunar_date":"\u814a\u6708\u5eff\u4e03","term":null,"constellation":"\u6c34\u74f6\u5ea7"}}
易语言代码:
  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
调试输出 (到文本 (编码_Utf8到Ansi (网页_访问_对象 (“https://www.iamwawa.cn/home/nongli/ajax”, 1, “?type=solar&year=2000&month=2&day=2”, , , , , , , , , , , , , , , , ))))


i支持库列表   支持库注释   
spec特殊功能支持库



补充内容 (2021-8-16 11:31):
json解析出来就是:农历:1999年12月27日 己卯年腊月廿七
生肖:兔
公历:2000年2月2日
星座:水瓶座

补充内容 (2021-8-16 11:32):
手机编程的话,是可以post请求的,我写手机+电脑的,这个我知道
回复

使用道具 举报

结帖率:100% (90/90)
发表于 2021-8-16 11:37:26 | 显示全部楼层   陕西省安康市
  
子程序名返回值类型公开备 注
转农历文本型 返回json字符串
参数名类 型参考可空数组备 注
农历转公历逻辑型为假时 公历转农历 为真时 农历转公历 默认为假
日期文本型格式 YYYY,DD,MM 为空为当前日期
变量名类 型静态数组备 注
script对象 
result文本型 
function文本型 
如果 (农历转公历 = )
function = “solar2lunar”
function = “lunar2solar”
如果真 (日期 = “”)
日期 = 到文本 (取年份 (取现行时间 ()))“,”到文本 (取月份 (取现行时间 ()))“,”到文本 (取日 (取现行时间 ()))
script.创建 (“scriptcontrol”, )
script.写属性 (“Language”, “JScript”)
script.数值方法 (“AddCode”, #常量1 )
result = script.通用方法 (“Eval”, “calendar.” + function + “(” + 日期 + “);”).取文本 ()  ' 此处的表达式如果比较复杂建议使用常量
返回 (result)  ' 返回变体类型 如果是文本可以取文本,如果是数值可以取数值


VX图片_20210816113550.png
js农历转换.e (29.05 KB, 下载次数: 4)
回复

使用道具 举报

结帖率:100% (90/90)
发表于 2021-8-16 11:44:12 | 显示全部楼层   陕西省安康市
  1. /**
  2. * @1900-2100区间内的公历、农历互转
  3. * [url=home.php?mod=space&uid=502337]@charset[/url] UTF-8
  4. * @Author  Jea杨(JJonline@JJonline.Cn)
  5. * [url=home.php?mod=space&uid=116177]@Time[/url]    2014-7-21
  6. * @Time    2016-8-13 Fixed 2033hex、Attribution Annals
  7. * @Time    2016-9-25 Fixed lunar LeapMonth Param Bug
  8. * @Time    2017-7-24 Fixed use getTerm Func Param Error.use solar year,NOT lunar year
  9. * [url=home.php?mod=space&uid=59980]@Version[/url] 1.0.3
  10. * @公历转农历:calendar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]
  11. * @农历转公历:calendar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]
  12. */
  13. var calendar = {

  14.     /**
  15.       * 农历1900-2100的润大小信息表
  16.       * [url=home.php?mod=space&uid=509315]@array[/url] Of Property
  17.       * [url=home.php?mod=space&uid=161696]@Return[/url] Hex
  18.       */
  19.     lunarInfo:[0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,//1900-1909
  20.             0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,//1910-1919
  21.             0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,//1920-1929
  22.             0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,//1930-1939
  23.             0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,//1940-1949
  24.             0x06ca0,0x0b550,0x15355,0x04da0,0x0a5b0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,//1950-1959
  25.             0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,//1960-1969
  26.             0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b6a0,0x195a6,//1970-1979
  27.             0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,//1980-1989
  28.             0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,//1990-1999
  29.             0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,//2000-2009
  30.             0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,//2010-2019
  31.             0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,//2020-2029
  32.             0x05aa0,0x076a3,0x096d0,0x04afb,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,//2030-2039
  33.             0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,//2040-2049
  34.             /**Add By JJonline@JJonline.Cn**/
  35.             0x14b63,0x09370,0x049f8,0x04970,0x064b0,0x168a6,0x0ea50, 0x06b20,0x1a6c4,0x0aae0,//2050-2059
  36.             0x0a2e0,0x0d2e3,0x0c960,0x0d557,0x0d4a0,0x0da50,0x05d55,0x056a0,0x0a6d0,0x055d4,//2060-2069
  37.             0x052d0,0x0a9b8,0x0a950,0x0b4a0,0x0b6a6,0x0ad50,0x055a0,0x0aba4,0x0a5b0,0x052b0,//2070-2079
  38.             0x0b273,0x06930,0x07337,0x06aa0,0x0ad50,0x14b55,0x04b60,0x0a570,0x054e4,0x0d160,//2080-2089
  39.             0x0e968,0x0d520,0x0daa0,0x16aa6,0x056d0,0x04ae0,0x0a9d4,0x0a2d0,0x0d150,0x0f252,//2090-2099
  40.             0x0d520],//2100

  41.     /**
  42.       * 公历每个月份的天数普通表
  43.       * @Array Of Property
  44.       * @return Number
  45.       */
  46.     solarMonth:[31,28,31,30,31,30,31,31,30,31,30,31],

  47.     /**
  48.       * 天干地支之天干速查表
  49.       * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
  50.       * @return Cn string
  51.       */
  52.     Gan:["\u7532","\u4e59","\u4e19","\u4e01","\u620a","\u5df1","\u5e9a","\u8f9b","\u58ec","\u7678"],

  53.     /**
  54.       * 天干地支之地支速查表
  55.       * @Array Of Property
  56.       * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
  57.       * @return Cn string
  58.       */
  59.     Zhi:["\u5b50","\u4e11","\u5bc5","\u536f","\u8fb0","\u5df3","\u5348","\u672a","\u7533","\u9149","\u620c","\u4ea5"],

  60.     /**
  61.       * 天干地支之地支速查表<=>生肖
  62.       * @Array Of Property
  63.       * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
  64.       * @return Cn string
  65.       */
  66.     Animals:["\u9f20","\u725b","\u864e","\u5154","\u9f99","\u86c7","\u9a6c","\u7f8a","\u7334","\u9e21","\u72d7","\u732a"],

  67.     /**
  68.       * 24节气速查表
  69.       * @Array Of Property
  70.       * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
  71.       * @return Cn string
  72.       */
  73.     solarTerm:["\u5c0f\u5bd2","\u5927\u5bd2","\u7acb\u6625","\u96e8\u6c34","\u60ca\u86f0","\u6625\u5206","\u6e05\u660e","\u8c37\u96e8","\u7acb\u590f","\u5c0f\u6ee1","\u8292\u79cd","\u590f\u81f3","\u5c0f\u6691","\u5927\u6691","\u7acb\u79cb","\u5904\u6691","\u767d\u9732","\u79cb\u5206","\u5bd2\u9732","\u971c\u964d","\u7acb\u51ac","\u5c0f\u96ea","\u5927\u96ea","\u51ac\u81f3"],

  74.     /**
  75.       * 1900-2100各年的24节气日期速查表
  76.       * @Array Of Property
  77.       * @return 0x string For splice
  78.       */
  79.     sTermInfo:['9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e','97bcf97c3598082c95f8c965cc920f',
  80.               '97bd0b06bdb0722c965ce1cfcc920f','b027097bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e',
  81.               '97bcf97c359801ec95f8c965cc920f','97bd0b06bdb0722c965ce1cfcc920f','b027097bd097c36b0b6fc9274c91aa',
  82.               '97b6b97bd19801ec9210c965cc920e','97bcf97c359801ec95f8c965cc920f','97bd0b06bdb0722c965ce1cfcc920f',
  83.               'b027097bd097c36b0b6fc9274c91aa','9778397bd19801ec9210c965cc920e','97b6b97bd19801ec95f8c965cc920f',
  84.               '97bd09801d98082c95f8e1cfcc920f','97bd097bd097c36b0b6fc9210c8dc2','9778397bd197c36c9210c9274c91aa',
  85.               '97b6b97bd19801ec95f8c965cc920e','97bd09801d98082c95f8e1cfcc920f','97bd097bd097c36b0b6fc9210c8dc2',
  86.               '9778397bd097c36c9210c9274c91aa','97b6b97bd19801ec95f8c965cc920e','97bcf97c3598082c95f8e1cfcc920f',
  87.               '97bd097bd097c36b0b6fc9210c8dc2','9778397bd097c36c9210c9274c91aa','97b6b97bd19801ec9210c965cc920e',
  88.               '97bcf97c3598082c95f8c965cc920f','97bd097bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa',
  89.               '97b6b97bd19801ec9210c965cc920e','97bcf97c3598082c95f8c965cc920f','97bd097bd097c35b0b6fc920fb0722',
  90.               '9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e','97bcf97c359801ec95f8c965cc920f',
  91.               '97bd097bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e',
  92.               '97bcf97c359801ec95f8c965cc920f','97bd097bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa',
  93.               '97b6b97bd19801ec9210c965cc920e','97bcf97c359801ec95f8c965cc920f','97bd097bd07f595b0b6fc920fb0722',
  94.               '9778397bd097c36b0b6fc9210c8dc2','9778397bd19801ec9210c9274c920e','97b6b97bd19801ec95f8c965cc920f',
  95.               '97bd07f5307f595b0b0bc920fb0722','7f0e397bd097c36b0b6fc9210c8dc2','9778397bd097c36c9210c9274c920e',
  96.               '97b6b97bd19801ec95f8c965cc920f','97bd07f5307f595b0b0bc920fb0722','7f0e397bd097c36b0b6fc9210c8dc2',
  97.               '9778397bd097c36c9210c9274c91aa','97b6b97bd19801ec9210c965cc920e','97bd07f1487f595b0b0bc920fb0722',
  98.               '7f0e397bd097c36b0b6fc9210c8dc2','9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e',
  99.               '97bcf7f1487f595b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa',
  100.               '97b6b97bd19801ec9210c965cc920e','97bcf7f1487f595b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722',
  101.               '9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e','97bcf7f1487f531b0b0bb0b6fb0722',
  102.               '7f0e397bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa','97b6b97bd19801ec9210c965cc920e',
  103.               '97bcf7f1487f531b0b0bb0b6fb0722','7f0e397bd07f595b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa',
  104.               '97b6b97bd19801ec9210c9274c920e','97bcf7f0e47f531b0b0bb0b6fb0722','7f0e397bd07f595b0b0bc920fb0722',
  105.               '9778397bd097c36b0b6fc9210c91aa','97b6b97bd197c36c9210c9274c920e','97bcf7f0e47f531b0b0bb0b6fb0722',
  106.               '7f0e397bd07f595b0b0bc920fb0722','9778397bd097c36b0b6fc9210c8dc2','9778397bd097c36c9210c9274c920e',
  107.               '97b6b7f0e47f531b0723b0b6fb0722','7f0e37f5307f595b0b0bc920fb0722','7f0e397bd097c36b0b6fc9210c8dc2',
  108.               '9778397bd097c36b0b70c9274c91aa','97b6b7f0e47f531b0723b0b6fb0721','7f0e37f1487f595b0b0bb0b6fb0722',
  109.               '7f0e397bd097c35b0b6fc9210c8dc2','9778397bd097c36b0b6fc9274c91aa','97b6b7f0e47f531b0723b0b6fb0721',
  110.               '7f0e27f1487f595b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa',
  111.               '97b6b7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722',
  112.               '9778397bd097c36b0b6fc9274c91aa','97b6b7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722',
  113.               '7f0e397bd097c35b0b6fc920fb0722','9778397bd097c36b0b6fc9274c91aa','97b6b7f0e47f531b0723b0b6fb0721',
  114.               '7f0e27f1487f531b0b0bb0b6fb0722','7f0e397bd07f595b0b0bc920fb0722','9778397bd097c36b0b6fc9274c91aa',
  115.               '97b6b7f0e47f531b0723b0787b0721','7f0e27f0e47f531b0b0bb0b6fb0722','7f0e397bd07f595b0b0bc920fb0722',
  116.               '9778397bd097c36b0b6fc9210c91aa','97b6b7f0e47f149b0723b0787b0721','7f0e27f0e47f531b0723b0b6fb0722',
  117.               '7f0e397bd07f595b0b0bc920fb0722','9778397bd097c36b0b6fc9210c8dc2','977837f0e37f149b0723b0787b0721',
  118.               '7f07e7f0e47f531b0723b0b6fb0722','7f0e37f5307f595b0b0bc920fb0722','7f0e397bd097c35b0b6fc9210c8dc2',
  119.               '977837f0e37f14998082b0787b0721','7f07e7f0e47f531b0723b0b6fb0721','7f0e37f1487f595b0b0bb0b6fb0722',
  120.               '7f0e397bd097c35b0b6fc9210c8dc2','977837f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721',
  121.               '7f0e27f1487f531b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722','977837f0e37f14998082b0787b06bd',
  122.               '7f07e7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722','7f0e397bd097c35b0b6fc920fb0722',
  123.               '977837f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722',
  124.               '7f0e397bd07f595b0b0bc920fb0722','977837f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721',
  125.               '7f0e27f1487f531b0b0bb0b6fb0722','7f0e397bd07f595b0b0bc920fb0722','977837f0e37f14998082b0787b06bd',
  126.               '7f07e7f0e47f149b0723b0787b0721','7f0e27f0e47f531b0b0bb0b6fb0722','7f0e397bd07f595b0b0bc920fb0722',
  127.               '977837f0e37f14998082b0723b06bd','7f07e7f0e37f149b0723b0787b0721','7f0e27f0e47f531b0723b0b6fb0722',
  128.               '7f0e397bd07f595b0b0bc920fb0722','977837f0e37f14898082b0723b02d5','7ec967f0e37f14998082b0787b0721',
  129.               '7f07e7f0e47f531b0723b0b6fb0722','7f0e37f1487f595b0b0bb0b6fb0722','7f0e37f0e37f14898082b0723b02d5',
  130.               '7ec967f0e37f14998082b0787b0721','7f07e7f0e47f531b0723b0b6fb0722','7f0e37f1487f531b0b0bb0b6fb0722',
  131.               '7f0e37f0e37f14898082b0723b02d5','7ec967f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721',
  132.               '7f0e37f1487f531b0b0bb0b6fb0722','7f0e37f0e37f14898082b072297c35','7ec967f0e37f14998082b0787b06bd',
  133.               '7f07e7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722','7f0e37f0e37f14898082b072297c35',
  134.               '7ec967f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722',
  135.               '7f0e37f0e366aa89801eb072297c35','7ec967f0e37f14998082b0787b06bd','7f07e7f0e47f149b0723b0787b0721',
  136.               '7f0e27f1487f531b0b0bb0b6fb0722','7f0e37f0e366aa89801eb072297c35','7ec967f0e37f14998082b0723b06bd',
  137.               '7f07e7f0e47f149b0723b0787b0721','7f0e27f0e47f531b0723b0b6fb0722','7f0e37f0e366aa89801eb072297c35',
  138.               '7ec967f0e37f14998082b0723b06bd','7f07e7f0e37f14998083b0787b0721','7f0e27f0e47f531b0723b0b6fb0722',
  139.               '7f0e37f0e366aa89801eb072297c35','7ec967f0e37f14898082b0723b02d5','7f07e7f0e37f14998082b0787b0721',
  140.               '7f07e7f0e47f531b0723b0b6fb0722','7f0e36665b66aa89801e9808297c35','665f67f0e37f14898082b0723b02d5',
  141.               '7ec967f0e37f14998082b0787b0721','7f07e7f0e47f531b0723b0b6fb0722','7f0e36665b66a449801e9808297c35',
  142.               '665f67f0e37f14898082b0723b02d5','7ec967f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721',
  143.               '7f0e36665b66a449801e9808297c35','665f67f0e37f14898082b072297c35','7ec967f0e37f14998082b0787b06bd',
  144.               '7f07e7f0e47f531b0723b0b6fb0721','7f0e26665b66a449801e9808297c35','665f67f0e37f1489801eb072297c35',
  145.               '7ec967f0e37f14998082b0787b06bd','7f07e7f0e47f531b0723b0b6fb0721','7f0e27f1487f531b0b0bb0b6fb0722'],

  146.     /**
  147.       * 数字转中文速查表
  148.       * @Array Of Property
  149.       * @trans ['日','一','二','三','四','五','六','七','八','九','十']
  150.       * @return Cn string
  151.       */
  152.     nStr1:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341"],

  153.     /**
  154.       * 日期转农历称呼速查表
  155.       * @Array Of Property
  156.       * @trans ['初','十','廿','卅']
  157.       * @return Cn string
  158.       */
  159.     nStr2:["\u521d","\u5341","\u5eff","\u5345"],

  160.     /**
  161.       * 月份转农历称呼速查表
  162.       * @Array Of Property
  163.       * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
  164.       * @return Cn string
  165.       */
  166.     nStr3:["\u6b63","\u4e8c","\u4e09","\u56db","\u4e94","\u516d","\u4e03","\u516b","\u4e5d","\u5341","\u51ac","\u814a"],

  167.     /**
  168.       * 返回农历y年一整年的总天数
  169.       * @param lunar Year
  170.       * @return Number
  171.       * @eg:var count = calendar.lYearDays(1987) ;//count=387
  172.       */
  173.     lYearDays:function(y) {
  174.         var i, sum = 348;
  175.         for(i=0x8000; i>0x8; i>>=1) { sum += (calendar.lunarInfo[y-1900] & i)? 1: 0; }
  176.         return(sum+calendar.leapDays(y));
  177.     },

  178.     /**
  179.       * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0
  180.       * @param lunar Year
  181.       * @return Number (0-12)
  182.       * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
  183.       */
  184.     leapMonth:function(y) { //闰字编码 \u95f0
  185.         return(calendar.lunarInfo[y-1900] & 0xf);
  186.     },

  187.     /**
  188.       * 返回农历y年闰月的天数 若该年没有闰月则返回0
  189.       * @param lunar Year
  190.       * @return Number (0、29、30)
  191.       * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
  192.       */
  193.     leapDays:function(y) {
  194.         if(calendar.leapMonth(y))  {
  195.             return((calendar.lunarInfo[y-1900] & 0x10000)? 30: 29);
  196.         }
  197.         return(0);
  198.     },

  199.     /**
  200.       * 返回农历y年m月(非闰月)的总天数,计算m为闰月时的天数请使用leapDays方法
  201.       * @param lunar Year
  202.       * @return Number (-1、29、30)
  203.       * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
  204.       */
  205.     monthDays:function(y,m) {
  206.         if(m>12 || m<1) {return -1}//月份参数从1至12,参数错误返回-1
  207.         return( (calendar.lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
  208.     },

  209.     /**
  210.       * 返回公历(!)y年m月的天数
  211.       * @param solar Year
  212.       * @return Number (-1、28、29、30、31)
  213.       * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
  214.       */
  215.     solarDays:function(y,m) {
  216.         if(m>12 || m<1) {return -1} //若参数错误 返回-1
  217.         var ms = m-1;
  218.         if(ms==1) { //2月份的闰平规律测算后确认返回28或29
  219.             return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
  220.         }else {
  221.             return(calendar.solarMonth[ms]);
  222.         }
  223.     },

  224.     /**
  225.      * 农历年份转换为干支纪年
  226.      * @param  lYear 农历年的年份数
  227.      * @return Cn string
  228.      */
  229.     toGanZhiYear:function(lYear) {
  230.         var ganKey = (lYear - 3) % 10;
  231.         var zhiKey = (lYear - 3) % 12;
  232.         if(ganKey == 0) ganKey = 10;//如果余数为0则为最后一个天干
  233.         if(zhiKey == 0) zhiKey = 12;//如果余数为0则为最后一个地支
  234.         return calendar.Gan[ganKey-1] + calendar.Zhi[zhiKey-1];
  235.         
  236.     },

  237.     /**
  238.      * 公历月、日判断所属星座
  239.      * @param  cMonth [description]
  240.      * @param  cDay [description]
  241.      * @return Cn string
  242.      */
  243.     toAstro:function(cMonth,cDay) {
  244.         var s   = "\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf";
  245.         var arr = [20,19,21,21,21,22,23,23,23,23,22,22];
  246.         return s.substr(cMonth*2 - (cDay < arr[cMonth-1] ? 2 : 0),2) + "\u5ea7";//座
  247.     },

  248.     /**
  249.       * 传入offset偏移量返回干支
  250.       * @param offset 相对甲子的偏移量
  251.       * @return Cn string
  252.       */
  253.     toGanZhi:function(offset) {
  254.         return calendar.Gan[offset%10] + calendar.Zhi[offset%12];
  255.     },

  256.     /**
  257.       * 传入公历(!)y年获得该年第n个节气的公历日期
  258.       * @param y公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起
  259.       * @return day Number
  260.       * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
  261.       */
  262.     getTerm:function(y,n) {
  263.         if(y<1900 || y>2100) {return -1;}
  264.         if(n<1 || n>24) {return -1;}
  265.         var _table = calendar.sTermInfo[y-1900];
  266.         var _info = [
  267.             parseInt('0x'+_table.substr(0,5)).toString() ,
  268.             parseInt('0x'+_table.substr(5,5)).toString(),
  269.             parseInt('0x'+_table.substr(10,5)).toString(),
  270.             parseInt('0x'+_table.substr(15,5)).toString(),
  271.             parseInt('0x'+_table.substr(20,5)).toString(),
  272.             parseInt('0x'+_table.substr(25,5)).toString()
  273.         ];
  274.         var _calday = [
  275.             _info[0].substr(0,1),
  276.             _info[0].substr(1,2),
  277.             _info[0].substr(3,1),
  278.             _info[0].substr(4,2),
  279.             
  280.             _info[1].substr(0,1),
  281.             _info[1].substr(1,2),
  282.             _info[1].substr(3,1),
  283.             _info[1].substr(4,2),
  284.             
  285.             _info[2].substr(0,1),
  286.             _info[2].substr(1,2),
  287.             _info[2].substr(3,1),
  288.             _info[2].substr(4,2),
  289.             
  290.             _info[3].substr(0,1),
  291.             _info[3].substr(1,2),
  292.             _info[3].substr(3,1),
  293.             _info[3].substr(4,2),
  294.             
  295.             _info[4].substr(0,1),
  296.             _info[4].substr(1,2),
  297.             _info[4].substr(3,1),
  298.             _info[4].substr(4,2),
  299.             
  300.             _info[5].substr(0,1),
  301.             _info[5].substr(1,2),
  302.             _info[5].substr(3,1),
  303.             _info[5].substr(4,2),
  304.         ];
  305.         return parseInt(_calday[n-1]);
  306.     },

  307.     /**
  308.       * 传入农历数字月份返回汉语通俗表示法
  309.       * @param lunar month
  310.       * @return Cn string
  311.       * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
  312.       */
  313.     toChinaMonth:function(m) { // 月 => \u6708
  314.         if(m>12 || m<1) {return -1} //若参数错误 返回-1
  315.         var s = calendar.nStr3[m-1];
  316.         s+= "\u6708";//加上月字
  317.         return s;
  318.     },

  319.     /**
  320.       * 传入农历日期数字返回汉字表示法
  321.       * @param lunar day
  322.       * @return Cn string
  323.       * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
  324.       */
  325.     toChinaDay:function(d){ //日 => \u65e5
  326.         var s;
  327.         switch (d) {
  328.             case 10:
  329.             s = '\u521d\u5341'; break;
  330.         case 20:
  331.             s = '\u4e8c\u5341'; break;
  332.             break;
  333.         case 30:
  334.             s = '\u4e09\u5341'; break;
  335.             break;
  336.         default :
  337.             s = calendar.nStr2[Math.floor(d/10)];
  338.             s += calendar.nStr1[d%10];
  339.         }
  340.         return(s);
  341.     },

  342.     /**
  343.       * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
  344.       * @param y year
  345.       * @return Cn string
  346.       * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
  347.       */
  348.     getAnimal: function(y) {
  349.         return calendar.Animals[(y - 4) % 12]
  350.     },

  351.     /**
  352.       * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
  353.       * @param y  solar year
  354.       * @param m  solar month
  355.       * @param d  solar day
  356.       * @return JSON object
  357.       * @eg:console.log(calendar.solar2lunar(1987,11,01));
  358.       */
  359.     solar2lunar:function (y,m,d) { //参数区间1900.1.31~2100.12.31
  360.         //年份限定、上限
  361.         if(y<1900 || y>2100) {
  362.             return -1;// undefined转换为数字变为NaN
  363.         }
  364.         //公历传参最下限
  365.         if(y==1900&&m==1&&d<31) {
  366.             return -1;
  367.         }
  368.         //未传参  获得当天
  369.         if(!y) {
  370.             var objDate = new Date();
  371.         }else {
  372.             var objDate = new Date(y,parseInt(m)-1,d)
  373.         }
  374.         var i, leap=0, temp=0;
  375.         //修正ymd参数
  376.         var y = objDate.getFullYear(),
  377.             m = objDate.getMonth()+1,
  378.             d = objDate.getDate();
  379.         var offset = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) - Date.UTC(1900,0,31))/86400000;
  380.         for(i=1900; i<2101 && offset>0; i++) {
  381.             temp    = calendar.lYearDays(i);
  382.             offset -= temp;
  383.         }
  384.         if(offset<0) {
  385.             offset+=temp; i--;
  386.         }
  387.         
  388.         //是否今天
  389.         var isTodayObj = new Date(),
  390.             isToday    = false;
  391.         if(isTodayObj.getFullYear()==y && isTodayObj.getMonth()+1==m && isTodayObj.getDate()==d) {
  392.             isToday = true;
  393.         }
  394.         //星期几
  395.         var nWeek = objDate.getDay(),
  396.            cWeek  = calendar.nStr1[nWeek];
  397.         //数字表示周几顺应天朝周一开始的惯例
  398.         if(nWeek==0) {
  399.             nWeek = 7;
  400.         }
  401.         //农历年
  402.         var year   = i;
  403.         var leap   = calendar.leapMonth(i); //闰哪个月
  404.         var isLeap = false;
  405.         
  406.         //效验闰月
  407.         for(i=1; i<13 && offset>0; i++) {
  408.             //闰月
  409.             if(leap>0 && i==(leap+1) && isLeap==false){
  410.                 --i;
  411.                 isLeap = true; temp = calendar.leapDays(year); //计算农历闰月天数
  412.             }
  413.             else{
  414.                 temp = calendar.monthDays(year, i);//计算农历普通月天数
  415.             }
  416.             //解除闰月
  417.             if(isLeap==true && i==(leap+1)) { isLeap = false; }
  418.             offset -= temp;
  419.         }
  420.         // 闰月导致数组下标重叠取反
  421.         if(offset==0 && leap>0 && i==leap+1)
  422.         {
  423.             if(isLeap){
  424.                 isLeap = false;
  425.             }else{
  426.                 isLeap = true; --i;
  427.             }
  428.         }
  429.         if(offset<0)
  430.         {
  431.             offset += temp; --i;
  432.         }
  433.         //农历月
  434.         var month      = i;
  435.         //农历日
  436.         var day        = offset + 1;
  437.         //天干地支处理
  438.         var sm         = m-1;
  439.         var gzY        = calendar.toGanZhiYear(year);
  440.         
  441.         // 当月的两个节气
  442.         // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
  443.         var firstNode  = calendar.getTerm(y,(m*2-1));//返回当月「节」为几日开始
  444.         var secondNode = calendar.getTerm(y,(m*2));//返回当月「节」为几日开始

  445.         // 依据12节气修正干支月
  446.         var gzM        = calendar.toGanZhi((y-1900)*12+m+11);
  447.         if(d>=firstNode) {
  448.             gzM        = calendar.toGanZhi((y-1900)*12+m+12);
  449.         }
  450.         
  451.         //传入的日期的节气与否
  452.         var isTerm = false;
  453.         var Term   = null;
  454.         if(firstNode==d) {
  455.             isTerm  = true;
  456.             Term    = calendar.solarTerm[m*2-2];
  457.         }
  458.         if(secondNode==d) {
  459.             isTerm  = true;
  460.             Term    = calendar.solarTerm[m*2-1];
  461.         }
  462.         //日柱 当月一日与 1900/1/1 相差天数
  463.         var dayCyclical = Date.UTC(y,sm,1,0,0,0,0)/86400000+25567+10;
  464.         var gzD         = calendar.toGanZhi(dayCyclical+d-1);
  465.         //该日期所属的星座
  466.         var astro       = calendar.toAstro(m,d);
  467.         
  468.         return "{" + ""lYear":" + year + ","lMonth":" + month + ","lDay":" + day + ","Animal":"" + calendar.getAnimal(year) + "","IMonthCn":"" + (isLeap?"\u95f0":'')+calendar.toChinaMonth(month) + "","IDayCn":"" + calendar.toChinaDay(day) + "","cYear":" + y + ","cMonth":" + m + ","cDay":" + d + ","gzYear":"" + gzY + "","gzMonth":"" + gzM + "","gzDay":"" + gzD +"","isToday":" + isToday + ","isLeap":" + isLeap + ","nWeek":" + nWeek + ","ncWeek":"" + "\u661f\u671f" + cWeek + "","isTerm":" + isTerm + ","Term":" + Term + ","astro":"" + astro + ""}"
  469.     },
  470.        
  471.     /**
  472.       * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
  473.       * @param y  lunar year
  474.       * @param m  lunar month
  475.       * @param d  lunar day
  476.       * @param isLeapMonth  lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
  477.       * @return JSON object
  478.       * @eg:console.log(calendar.lunar2solar(1987,9,10));
  479.       */
  480.     lunar2solar:function(y,m,d,isLeapMonth) {   //参数区间1900.1.31~2100.12.1
  481.         var isLeapMonth = !!isLeapMonth;
  482.         var leapOffset  = 0;
  483.         var leapMonth   = calendar.leapMonth(y);
  484.         var leapDay     = calendar.leapDays(y);
  485.         if(isLeapMonth&&(leapMonth!=m)) {return -1;}//传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
  486.         if(y==2100&&m==12&&d>1 || y==1900&&m==1&&d<31) {return -1;}//超出了最大极限值
  487.         var day  = calendar.monthDays(y,m);
  488.         var _day = day;
  489.         //bugFix 2016-9-25
  490.         //if month is leap, _day use leapDays method
  491.         if(isLeapMonth) {
  492.             _day = calendar.leapDays(y,m);
  493.         }
  494.         if(y < 1900 || y > 2100 || d > _day) {return -1;}//参数合法性效验
  495.         
  496.         //计算农历的时间差
  497.         var offset = 0;
  498.         for(var i=1900;i<y;i++) {
  499.             offset+=calendar.lYearDays(i);
  500.         }
  501.         var leap = 0,isAdd= false;
  502.         for(var i=1;i<m;i++) {
  503.             leap = calendar.leapMonth(y);
  504.             if(!isAdd) {//处理闰月
  505.                 if(leap<=i && leap>0) {
  506.                     offset+=calendar.leapDays(y);isAdd = true;
  507.                 }
  508.             }
  509.             offset+=calendar.monthDays(y,i);
  510.         }
  511.         //转换闰月农历 需补充该年闰月的前一个月的时差
  512.         if(isLeapMonth) {offset+=day;}
  513.         //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
  514.         var stmap   =   Date.UTC(1900,1,30,0,0,0);
  515.         var calObj  =   new Date((offset+d-31)*86400000+stmap);
  516.         var cY      =   calObj.getUTCFullYear();
  517.         var cM      =   calObj.getUTCMonth()+1;
  518.         var cD      =   calObj.getUTCDate();

  519.         return calendar.solar2lunar(cY,cM,cD);
  520.     }
  521. };
复制代码


js改成这个 json拼串的时候拼错了
回复

使用道具 举报

结帖率:100% (10/10)
 楼主| 发表于 2021-8-16 15:18:16 | 显示全部楼层   澳门特别行政区*
pwind 发表于 2021-8-16 11:44
js改成这个 json拼串的时候拼错了

高手真多啊 ,感谢,请告诉我哪里拼错了,我用你的第一个例子,可以输出,但是用你这个JS 就没输出了,这是咋回事
回复

使用道具 举报

结帖率:100% (10/10)
 楼主| 发表于 2021-8-16 15:30:29 | 显示全部楼层   澳门特别行政区*
pwind 发表于 2021-8-16 11:44
js改成这个 json拼串的时候拼错了

我用你上面的例子中的可以输出的,你发的这个JS 却没输出了,不知哪里的问题
回复

使用道具 举报

结帖率:100% (10/10)
 楼主| 发表于 2021-8-16 16:01:55 | 显示全部楼层   澳门特别行政区*
pwind 发表于 2021-8-16 11:37
[e=1].版本 2

.子程序 转农历, 文本型, , 返回json字符串

.版本 2
.支持库 spec

result = script.通用方法 (“Eval”, “calendar.” + function + “(” + 日期 + “);”).取文本 ()  ' 此处的表达式如果比较复杂建议使用常量
' 调试输出 (result)
json.解析 (result)
调试输出 (json.取通用属性 (“lYear”))
调试输出 (json.取通用属性 (“lMonth”))
返回 (result)  ' 返回变体类型 如果是文本可以取文本,如果是数值可以取数值

还有阿 在问下 这个JSON 咋输出是空的,是我写的不对?

点评

我这边没问题,精易模块   陕西省安康市  发表于 2021-8-16 16:11
回复

使用道具 举报

结帖率:100% (10/10)
 楼主| 发表于 2021-8-16 16:11:45 | 显示全部楼层   澳门特别行政区*
pwind 发表于 2021-8-16 15:57
就替换掉常量就好了

至此大功告成,感谢高手啊 隔行如山阿 真是不懂 现在好了,可以用了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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