微信平台开发——日历服务

             

                   很多人可能用过如下的功能:

                        

                我向微信号发个字符,然后后台去解析字符,拆出其中的关键字,然后去数据库查询是否开启此项服务,如果服务开启,则返回给用户调用此服务的结果。

            最近两天开始做的服务有,天气查询,日历,快递,火车,黄金。。。等六个服务做成接口,今天要分析的是这里面唯一没有调用外部API接口的服务。

                 首先,我们要写好一个计算农历的方法,:

               

#region 获取农历方法

        ///<summary>
        /// 实例化一个 ChineseLunisolarCalendar
        ///</summary>
        private static ChineseLunisolarCalendar ChineseCalendar = new ChineseLunisolarCalendar();

        ///<summary>
        /// 十天干
        ///</summary>
        private static string[] tg = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };

        ///<summary>
        /// 十二地支
        ///</summary>
        private static string[] dz = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };

        ///<summary>
        /// 十二生肖
        ///</summary>
        private static string[] sx = { "鼠", "牛", "虎", "免", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };

        ///<summary>
        /// 返回农历天干地支年
        ///</summary>
        ///<param name="year">农历年</param>
        ///<return s></return s>
        public static string GetLunisolarYear(int year)
        {
            if (year > 3)
            {
                int tgIndex = (year - 4) % 10;
                int dzIndex = (year - 4) % 12;

                return string.Concat(tg[tgIndex], dz[dzIndex], "[", sx[dzIndex], "]");
            }

            throw new ArgumentOutOfRangeException("无效的年份!");
        }

        ///<summary>
        /// 农历月
        ///</summary>

        ///<return s></return s>
        private static string[] months = { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二(腊)" };

        ///<summary>
        /// 农历日
        ///</summary>
        private static string[] days1 = { "初", "十", "廿", "三" };
        ///<summary>
        /// 农历日
        ///</summary>
        private static string[] days = { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };

        ///<summary>
        /// 返回农历月
        ///</summary>
        ///<param name="month">月份</param>
        ///<return s></return s>
        public static string GetLunisolarMonth(int month)
        {
            if (month < 13 && month > 0)
            {
                return months[month - 1];
            }

            throw new ArgumentOutOfRangeException("无效的月份!");
        }

        ///<summary>
        /// 返回农历日
        ///</summary>
        ///<param name="day">天</param>
        ///<return s></return s>
        public static string GetLunisolarDay(int day)
        {
            if (day > 0 && day < 32)
            {
                if (day != 20 && day != 30)
                {
                    return string.Concat(days1[(day - 1) / 10], days[(day - 1) % 10]);
                }
                else
                {
                    return string.Concat(days[(day - 1) / 10], days1[1]);
                }
            }

            throw new ArgumentOutOfRangeException("无效的日!");
        }

        ///<summary>
        /// 根据公历获取农历日期
        ///</summary>
        ///<param name="datetime">公历日期</param>
        ///<return s></return s>
        public static string GetChineseDateTime(DateTime datetime)
        {
            int year = ChineseCalendar.GetYear(datetime);
            int month = ChineseCalendar.GetMonth(datetime);
            int day = ChineseCalendar.GetDayOfMonth(datetime);
            //获取闰月, 0 则表示没有闰月
            int leapMonth = ChineseCalendar.GetLeapMonth(year);

            bool isleap = false;

            if (leapMonth > 0)
            {
                if (leapMonth == month)
                {
                    //闰月
                    isleap = true;
                    month--;
                }
                else if (month > leapMonth)
                {
                    month--;
                }
            }

            return string.Concat(GetLunisolarYear(year), "年", isleap ? "闰" : string.Empty, GetLunisolarMonth(month), "月", GetLunisolarDay(day));
        }

        #endregion

 

                接着,拼接好返回的字符:

              

  Console.Write(DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") + "\r\n" + "农历为:"+GetChineseDateTime(DateTime.Now));

             为了测试外部调用的情况,我们可以这样,一个ajax过来,然后提交到handler里面,handler调用这些接口来测试下。

                   需要注意的是,

                       1,拼接好的字符串里面的换行符最好是HTML标签中的<br/>,不使用\n;

                       2,调用百度等大型开发平台的API接口的时候,对于返回的JSON,处理JSON转对象的时候,要注意JSON里面数组都要变成LIST,然后再调用自己构造的泛型方法去转换。

下面分享一些私人手藏的接口:

     

http://api.ajaxsns.com/

http://www.djdkx.com/open/randxml

http://api.map.baidu.com/telematics/v3/weather?location=%E5%8C%97%E4%BA%AC&output=json&ak=这里填写自己的AK

http://www.twototwo.cn/train/QueryTrainScheduleByNumber.aspx

http://www.chepiao100.com/my/doc/checi.html

http://www.haoservice.com/apilist/

http://www.bejson.com/go.html?u=http://www.bejson.com/webInterface.html

        网上也有很多付费的接口,另外,今天做黄金查询的时候,发现了个聚合数据也不错哟~

    

时间: 2024-10-27 12:57:59

微信平台开发——日历服务的相关文章

HTML5+JS,微信平台开发

   [项目概要]     最近进入了一个新的项目,手机移动端的开发.微信平台,现在是家喻户晓.而自己没想到,这么快,就可以亲身接触到这样一个微信平台开发项目中.如何使得我们写HTML页面去适应各种手机,这就是在这个项目中,需要我们去做处理的一方面.    [项目基础]     HTML,大家都有很长一段时间的接触了,前台页面,一直是比较薄弱和不重视的地方.如果在面试时,让自己手写一段HTML代码,恐怕是难以下笔.而这一次,加入到项目组中,是让我们先从前台页面开始,HTML5+JS,实现手机移动

开源项目-为什么微信平台开发没有开源组织呢

问题描述 为什么微信平台开发没有开源组织呢 为什么微信开发这么火,却没有一个第三方平台开发的开源项目,提供整个第三方后台管理(包括源码)?初学的时候,看了柳峰的微信开发入门篇,很奇怪地发现现在居然还有人把入门篇的内容还弄成了视频,还要收费!做了一年多的微信开发,也做了几个微信项目.初学的时候,经常到网上找资料,有一大堆的问题,还好都挺过来了.现在我把整个微信开发的平台重新设计了一遍,想把它开源出来:让那些想二次开发的公司,对微信的基础功能开发以及某些高级功能,不需要再花时间和精力重新开发一次,以

微信平台开发-用sae部署 开发微信平台Java 验证失败

问题描述 用sae部署 开发微信平台Java 验证失败 )企业号开启回调模式 echostr校验失败,请您检查是否正确解密并输出明文echostr 在新浪日志中看到签名验证失败,ase解密失败 .大牛们能不能解决呀.用的是Java 开发 解决方案 您好,如果微信公众平台开发需要用到AES加解密,是需要替换JCE无限制权限策略文件的. 否则,AES密钥长度大于128,就会抛异常"java.security.InvalidKeyException: Illegal key size". 这

微信公众平台开发问答-20161215

================================================================ 消息分组:QQ群 518924126================================================================消息对象:微信平台开发有问必答群================================================================ 2016-11-16 18:15:33 [师

php 微信开发平台开发小试验

微信和随之微信产生的开放平台最近着实火了一下.一直想做个微信的平台试试,最近有了个好点子,想尽快把它实现出来,好在微信不需要什么UI等等的设计,只需要把逻辑展现出来即可了.其实微信公众平台如果只是作为一个发布信息的平台的话,也就是"编辑模式"下其实是无需敲代码的.只是在开发者模式下需要开发者去设计一定的逻辑和代码去实现特定的功能,接下来就说下开发的起步:   1.开发微信公众平台首先要有服务器资源,当然那种编辑模式的不算.所谓的编辑模式就是那种单纯的每天推送一条消息的公众账号.服务器资

腾讯推官方公众平台开发工具“腾讯风铃”,强化微信公众号服务属性

摘要: 据@ 管鹏 前些天参加腾讯大渝网的腾讯区域门户微信沙龙活动得到的 消息 ,腾讯将推出官方的微信公众平台开发工具--" 腾讯风铃 ".据管鹏介绍,"腾讯风铃是一个快速的.可视 据@管鹏前些天参加腾讯大渝网的腾讯区域门户微信沙龙活动得到的消息,腾讯将推出官方的微信公众平台开发工具--"腾讯风铃".据管鹏介绍,"腾讯风铃是一个快速的.可视化的无线建站工具,根据演示让企业或者个人可以在5分钟内完成微信APP网站的搭建工作".这就和我们之

微信公众平台开发人员POSTXML助手[php版]

估计网上搜索有微信开发不返回信息的,各种问题出现,但是是服务端模拟的,没法测试,今天我就写了一个类,专门测试微信开发中遇到的问题,这个类使用简单,并且能够模拟提交,返回模拟的微信服务器返回的信息!这样开发起来就很简单明了了!需要的可以拿走!   <?php /* *@author widuu *@time 2013-7-4 *@模拟提交测试微信数据 */ class WinXinPost{ private $event = ""; private $content = "

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M

微信公众平台开发 JS-SDK开发(图像接口实例)

本文并非是对微信JS-SDK说明文档的复制,而是通过一个简单的例子来更深入的了解使用微信JS-SDK,具体文档请参考官方说明文档<微信JS-SDK说明文档>.微信公众平台面向开发者开放微信内网页开发工具包(微信JS-SDK),通过微信JS-SDK提供的11类接口集,开发者不仅能够在网页上使用微信本身的拍照.选图.语音.位置等基本能力,还可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 微信JS-SDK提供的11类接口(分享接口.图像接口.音频接口.智能