星座类 (UserLib.World.Time.Constellation)

原创 2006年06月19日 13:25:00

以下是星座类,用于判断你属于哪个星座,也可以获取星座对应当日期范围

 

其中涉及到的类Segment将会在文章末尾解释

 

using System;

using System.Collections.Generic;

using System.Text;

 

namespace UserLib.World.Time

{

    /// <summary>

    /// 星座

    /// </summary>

    public class Constellation

     {

        private static Segment[] data=new Segment[12];         //保存星座数据

 

        /// <summary>

        /// 日期索引函数

        /// </summary>

        /// <param name="dt">日期</param>

        /// <returns>对应的索引</returns>

        private static int Index(DateTime dt)

        {

            //将年份统一为

            //因为年是闰年,当输入的日期为月日时,程序不会出错

            DateTime rdt = new DateTime(2000, dt.Month, dt.Day);

            for(int i=0;i<12;i++)

            {

                if (rdt>=data[i].StartDateTime && rdt<=data[i].EndDateTime)

                {

                    return i;

                }

            }

            return -1;

        }

 

        /// <summary>

        /// 中文名称索引函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <returns>对应的索引</returns>

        private static int IndexCN(string cnName)

        {

            for (int i = 0; i < 12; i++)

            {

                if (data[i].CNName == cnName)

                {

                    return i;

                }

            }

            return -1;

        }

 

        /// <summary>

        /// 英文名称索引函数

        /// </summary>

        /// <param name="enName">英文名称</param>

        /// <returns>对应的索引</returns>

        private static int IndexEN(string enName)

        {

            for (int i = 0; i < 12; i++)

            {

                if (data[i].ENName.ToLower() == enName.ToLower())

                {

                    return i;

                }

            }

            return -1;

        }

 

        /// <summary>

        /// 构造函数

        /// </summary>

        static Constellation()

        {

            data[0] = new Segment("水瓶座", "Aquarius", new DateTime(2000, 1, 21), new DateTime(2000, 2, 18));

            data[1] = new Segment("双鱼座", "Pisces", new DateTime(2000, 2, 19), new DateTime(2000, 3, 20));

            data[2] = new Segment("白羊座", "Aries", new DateTime(2000, 3, 21), new DateTime(2000, 4, 20));

            data[3] = new Segment("金牛座", "Taurus", new DateTime(2000, 4, 21), new DateTime(2000, 5, 21));

            data[4] = new Segment("双子座", "Gemini", new DateTime(2000, 5, 22), new DateTime(2000, 6, 21));

            data[5] = new Segment("巨蟹座", "Cancer", new DateTime(2000, 6, 22), new DateTime(2000, 7, 22));

            data[6] = new Segment("狮子座", "Leo", new DateTime(2000, 7, 23), new DateTime(2000, 8, 23));

            data[7] = new Segment("处女座", "Virgo", new DateTime(2000, 8, 24), new DateTime(2000, 9, 22));

            data[8] = new Segment("天秤座", "Libra", new DateTime(2000, 9, 23), new DateTime(2000, 10, 23));

            data[9] = new Segment("天蝎座", "Scorpio", new DateTime(2000, 10, 24), new DateTime(2000, 11, 22));

            data[10] = new Segment("射手座", "Sagittarius", new DateTime(2000, 11, 23), new DateTime(2000, 12, 21));

            data[11] = new Segment("摩羯座", "Capricorn", new DateTime(2000, 12, 22), new DateTime(2000, 1, 20));

        }

 

        /// <summary>

        /// 获取星座的中文名称

        /// </summary>

        /// <param name="dt">日期</param>

        /// <returns>星座的中文名称</returns>

        public static string GetCNName(DateTime dt)

        {

            int i = Index(dt);

            return data[i].CNName;

        }

 

        /// <summary>

        /// 获取星座的英文名称

        /// </summary>

        /// <param name="dt">日期</param>

        /// <returns>星座的英文名称</returns>

        public static string GetENName(DateTime dt)

        {

            int i = Index(dt);

            return data[i].ENName;

        }

 

        /// <summary>

        /// 获取星座的起始日期

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <returns>星座的起始日期</returns>

        public static DateTime GetStartDateByCNName(string cnName)

        {

            int i = IndexCN(cnName);

            if (i != -1)

            {

                return data[i].StartDateTime;

            }

            else

            {

                throw new IndexOutOfRangeException();

            }

        }

 

        /// <summary>

        /// 获取星座的终止日期

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <returns>星座的终止日期</returns>

        public static DateTime GetEndDateByCNName(string cnName)

        {

            int i = IndexCN(cnName);

            if (i != -1)

            {

                return data[i].EndDateTime;

            }

            else

            {

                throw new IndexOutOfRangeException();

            }

        }

 

        /// <summary>

        /// 获取星座的起始日期

        /// </summary>

        /// <param name="enName">英文名称</param>

        /// <returns>星座的起始日期</returns>

        public static DateTime GetStartDateByENName(string enName)

        {

            int i = IndexEN(enName);

            if (i != -1)

            {

                return data[i].StartDateTime;

            }

            else

            {

                throw new IndexOutOfRangeException();

            }

        }

 

        /// <summary>

        /// 获取星座的终止日期

        /// </summary>

        /// <param name="enName">英文名称</param>

        /// <returns>星座的终止日期</returns>

        public static DateTime GetEndDateByENName(string enName)

        {

            int i = IndexEN(enName);

            if (i != -1)

            {

                return data[i].EndDateTime;

            }

            else

            {

                throw new IndexOutOfRangeException();

            }

        }

 

        /// <summary>

        /// 获取星座的起始日期

        /// </summary>

        /// <param name="dt">日期</param>

        /// <returns>星座的起始日期</returns>

        public static DateTime GetStartDateByDate(DateTime dt)

        {

            int i = Index(dt);

            return data[i].StartDateTime;

        }

 

        /// <summary>

        /// 获取星座的终止日期

        /// </summary>

        /// <param name="dt">日期</param>

        /// <returns>星座的终止日期</returns>

        public static DateTime GetEndDateByDate(DateTime dt)

        {

            int i = Index(dt);

            return data[i].EndDateTime;

        }

           

     }

}

 

 

下面解释上文中提到的Segment

 

此类是用于保存每个时间对应当意义或节日名称,在星座类中用于保存各个星座的时间段。

 

using System;

using System.Collections.Generic;

using System.Text;

 

namespace UserLib.World.Time

{

    /// <summary>

    /// 用于存储一个时间断对应的意义

    /// </summary>

    public class Segment

    {

        private string cnName;          //中文名称

        private string cnShortName;     //中文名称缩写

        private string enName;          //英文名称

        private string enShortName;     //英文名称缩写

        private DateTime start;         //起始时间

        private DateTime end;           //终止时间

 

        /// <summary>

        /// 赋值函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <param name="cnShortName">中文名称缩写</param>

        /// <param name="enName">英文名称</param>

        /// <param name="enShortName">英文名称缩写</param>

        /// <param name="startDateTime">起始日期</param>

        /// <param name="endDateTime">终止日期</param>

        private void Evaluate(string cnName, string cnShortName, string enName, string enShortName, DateTime startDateTime, DateTime endDateTime)

        {

            this.cnName = cnName;

            this.cnShortName = cnShortName;

            this.enName = enName;

            this.enShortName = enShortName;

            start = startDateTime;

            end = endDateTime;

        }

 

        #region 构造函数

 

        /// <summary>

        /// 构造函数

        /// </summary>

        public Segment() { }

 

        /// <summary>

        /// 构造函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <param name="dateTime">时间</param>

        public Segment(string cnName, DateTime dateTime)

        {

            Evaluate(cnName, null, null, null, dateTime, dateTime);

        }

 

        /// <summary>

        /// 构造函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <param name="enName">英文名称</param>

        /// <param name="dateTime">时间</param>

        public Segment(string cnName, string enName, DateTime dateTime)

        {

            Evaluate(cnName, null, enName, null, dateTime, dateTime);

        }  

 

        /// <summary>

        /// 构造函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <param name="cnShortName">中文名称缩写</param>

        /// <param name="enName">英文名称</param>

        /// <param name="enShortName">英文名称缩写</param>

        /// <param name="dateTime">时间</param>

        public Segment(string cnName, string cnShortName, string enName, string enShortName, DateTime dateTime)

        {

            Evaluate(cnName, cnShortName, enName, enShortName, dateTime, dateTime);

        }

 

        /// <summary>

        /// 构造函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <param name="startDateTime">起始日期</param>

        /// <param name="endDateTime">终止日期</param>

        public Segment(string cnName, DateTime startDateTime, DateTime endDateTime)

        {

            Evaluate(cnName, null, null, null, startDateTime, endDateTime);

        }

 

        /// <summary>

        /// 构造函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <param name="enName">英文名称</param>

        /// <param name="startDateTime">起始日期</param>

        /// <param name="endDateTime">终止日期</param>

        public Segment(string cnName, string enName, DateTime startDateTime, DateTime endDateTime)

        {

            Evaluate(cnName, null, enName, null, startDateTime, endDateTime);

        }

 

        /// <summary>

        /// 构造函数

        /// </summary>

        /// <param name="cnName">中文名称</param>

        /// <param name="cnShortName">中文名称缩写</param>

        /// <param name="enName">英文名称</param>

        /// <param name="enShortName">英文名称缩写</param>

        /// <param name="startDateTime">起始日期</param>

        /// <param name="endDateTime">终止日期</param>

        public Segment(string cnName, string cnShortName, string enName, string enShortName, DateTime startDateTime, DateTime endDateTime)

        {

            Evaluate(cnShortName, cnShortName, enName, enShortName, startDateTime, endDateTime);

        }

 

        #endregion

 

        #region 属性

        /// <summary>

        /// 获取或设置中文名称

        /// </summary>

        public string CNName

        {

            get

            {

                return cnName;

            }

            set

            {

                cnName = value;

            }

        }

 

        /// <summary>

        /// 获取或设置中文名称缩写

        /// </summary>

        public string CNShortName

        {

            get

            {

                return cnShortName;

            }

            set

            {

                cnShortName = value;

            }

        }

 

        /// <summary>

        /// 获取或设置英文名称

        /// </summary>

        public string ENName

        {

            get

            {

                return enName;

            }

            set

            {

                enName = value;

            }

        }

 

        /// <summary>

        /// 获取或设置英文名称缩写

        /// </summary>

        public string ENShortName

        {

            get

            {

                return enShortName;

            }

            set

            {

                enShortName = value;

            }

        }

 

        /// <summary>

        /// 获取或设置起始时间

        /// </summary>

        public DateTime StartDateTime

        {

            get

            {

                return start;

            }

            set

            {

                start = value;

            }

        }

 

        /// <summary>

        /// 获取或设置终止时间

        /// </summary>

        public DateTime EndDateTime

        {

            get

            {

                return end;

            }

            set

            {

                end = value;

            }

        }

 

        #endregion

 

    }

}

 

 

根据日期,转换成星座、生肖工具类

package com.ss.common.util; import java.text.ParseException; import java.text.SimpleDateFormat; imp...
  • saindy5828
  • saindy5828
  • 2015年08月11日 10:23
  • 1228

黑马程序员-----------------常用类

常用类 常用类  Object类 它是Java所有类的根类.所以Java的所有对象都拥有Object类的成员.  1.一般方法  boolean equals(Object ...
  • u011021652
  • u011021652
  • 2014年09月19日 21:17
  • 259

【Java】实现一个根据日期判断星座程序的编写

思路 直接根据月份做索引,然后根据日期边界判断是本月的星座还是上月的。 最终的效果图 初始图: 选择图: 判断星座 Java代码 package com.test0803; import ...
  • oYunTaoLianWu
  • oYunTaoLianWu
  • 2013年08月06日 00:17
  • 4376

给定公历日期计算12星座(Java代码实现)

给定公历日期,计算返回该日期对应的十二星座。 public static String getXingZuoName(int month, int day); 注意:参数month和day均为公历...
  • zhangphil
  • zhangphil
  • 2015年02月22日 17:06
  • 1958

Android应用开发系列——星座达人①

又是隔了好一阵子,当时写的一个应用——星座达人,提供一系列的综合服务,当时就是脑子一热,就想写个星座题材的应用。 应用截图:                              具体的...
  • EricFantastic
  • EricFantastic
  • 2015年12月25日 16:44
  • 1542

星座运势sdk代码示例实现分享

运势查询也是一种大众化的娱乐方式,星座运势sdk方便查询十二星座的今日运势,下面分享的是今日或明日运势格式和本周或下周运势格式。 接口名称:星座运势sdk 接口平台:聚合数据 接口地址:http://...
  • webserviceapi
  • webserviceapi
  • 2015年09月30日 09:46
  • 1014

日期匹配星座,月日匹配星座,android 星座

通过 月日实现匹配星座功能 先准备数据  Android 版本数据  我是用的 array  这个可以直接拷贝到项目中直接用 白羊座 金牛座 双子座 巨蟹座 狮子座 处女座 天秤座 天蝎座 射手座...
  • shaoyezhangliwei
  • shaoyezhangliwei
  • 2016年03月15日 19:41
  • 1832

java十二星座 (快来测试你是什么星座吧)

无聊写个十二星座。。 我发现我好像都是无聊的时候学习的。。。package 十二星座; import java.awt.*; import javax.swing.*; import java.a...
  • su20145104009
  • su20145104009
  • 2015年10月17日 17:18
  • 1889

C#: 星座星盘计算算法

前一篇提到计算八卦五行的算法,这里要跟大家分享一个星座星盘的算法。你们可能觉得笔者怎么开始研究这些玄幻的东西了,确实笔者觉得有一些真的是很扯,不过笔者的目的是为了研究大数据。好了,说到星盘笔者发现新浪...
  • lyx_zhl
  • lyx_zhl
  • 2016年12月31日 14:56
  • 1684

mysql 查询年龄段,星座以及最近7天生日的sql

1、查询年龄段 小于20 //查询小于20岁的人的个数,DATE_FORMAT(birthday, '%Y')其中的birthday就是数据库的生日这个date类型字段 String hql...
  • QH_JAVA
  • QH_JAVA
  • 2016年09月22日 19:39
  • 1749
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:星座类 (UserLib.World.Time.Constellation)
举报原因:
原因补充:

(最多只允许输入30个字)