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

给定公历日期,计算返回该日期对应的十二星座。

public static String getXingZuoName(int month, int day);

注意:参数month和day均为公历月、日。

返回的中文星座名如:处女座。

import java.util.Map;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;

//import	android.util.Log;

public class XingZuo {
	private static List<Map<String, Object>> LIST = null;
	private static float[][] floatXingZuo = null;

	public XingZuo() {
		// LIST=loadXingZuo12();
		// floatXingZuo=loadXingZuoFloatValue();
	}

	public static String getXingZuoName(int month, int day) {
		if (floatXingZuo == null)
			floatXingZuo = loadXingZuoFloatValue();

		String ds = String.format("%02d", day);
		float target = Float.valueOf(month + "." + ds);

		boolean bool1 = Float.compare(target, 12.22f) >= 0 ? true : false;
		boolean bool2 = Float.compare(target, 1.20f) <= 0 ? true : false;
		if (bool1 || bool2) {
			return "摩羯座";
		}

		int i;
		boolean b1, b2;
		for (i = 0; i < 12; i++) {

			b1 = Float.compare(target, floatXingZuo[0][i]) >= 0 ? true : false;
			b2 = Float.compare(target, floatXingZuo[1][i]) <= 0 ? true : false;

			if (b1 && b2)
				break;
		}

		Map map = (Map) (LIST.get(i));

		return map.get("XINGZUO_NAME") + "";
	}

	private static float[][] loadXingZuoFloatValue() {
		if (LIST == null)
			LIST = loadXingZuo12();

		Map map = null;
		// String xzname=null;
		int mind, maxd, minm, maxm;

		float[][] fxingzuo = new float[2][12];

		float start, end;
		for (int i = 0; i < 12; i++) {
			map = (Map) (LIST.get(i));

			mind = Integer.parseInt(map.get("MIN_DAY") + "");
			maxd = Integer.parseInt(map.get("MAX_DAY") + "");
			minm = Integer.parseInt(map.get("MIN_MONTH") + "");
			maxm = Integer.parseInt(map.get("MAX_MONTH") + "");

			start = Float.valueOf(minm + "." + mind);
			end = Float.valueOf(maxm + "." + maxd);

			fxingzuo[0][i] = start;
			fxingzuo[1][i] = end;
		}

		return fxingzuo;
	}

	private static List loadXingZuo12() {
		String XINGZUO_NAME = "XINGZUO_NAME";

		String MIN_DAY = "MIN_DAY";
		String MIN_MONTH = "MIN_MONTH";
		String MAX_DAY = "MAX_DAY";
		String MAX_MONTH = "MAX_MONTH";

		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
		Map<String, Object> map = null;

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "白羊座");
		map.put(MIN_DAY, 21);
		map.put(MAX_DAY, 20);
		map.put(MIN_MONTH, 3);
		map.put(MAX_MONTH, 4);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "金牛座");
		map.put(MIN_DAY, 21);
		map.put(MAX_DAY, 21);
		map.put(MIN_MONTH, 4);
		map.put(MAX_MONTH, 5);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "双子座");
		map.put(MIN_DAY, 22);
		map.put(MAX_DAY, 21);
		map.put(MIN_MONTH, 5);
		map.put(MAX_MONTH, 6);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "巨蟹座");
		map.put(MIN_DAY, 22);
		map.put(MAX_DAY, 22);
		map.put(MIN_MONTH, 6);
		map.put(MAX_MONTH, 7);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "狮子座");
		map.put(MIN_DAY, 23);
		map.put(MAX_DAY, 23);
		map.put(MIN_MONTH, 7);
		map.put(MAX_MONTH, 8);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "处女座");
		map.put(MIN_DAY, 24);
		map.put(MAX_DAY, 23);
		map.put(MIN_MONTH, 8);
		map.put(MAX_MONTH, 9);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "天秤座");
		map.put(MIN_DAY, 24);
		map.put(MAX_DAY, 23);
		map.put(MIN_MONTH, 9);
		map.put(MAX_MONTH, 10);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "天蝎座");
		map.put(MIN_DAY, 24);
		map.put(MAX_DAY, 22);
		map.put(MIN_MONTH, 10);
		map.put(MAX_MONTH, 11);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "射手座");
		map.put(MIN_DAY, 23);
		map.put(MAX_DAY, 21);
		map.put(MIN_MONTH, 11);
		map.put(MAX_MONTH, 12);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "摩羯座");
		map.put(MIN_DAY, 22);
		map.put(MAX_DAY, 20);
		map.put(MIN_MONTH, 12);
		map.put(MAX_MONTH, 1);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "水瓶座");
		map.put(MIN_DAY, 21);
		map.put(MAX_DAY, 19);
		map.put(MIN_MONTH, 1);
		map.put(MAX_MONTH, 2);
		list.add(map);

		map = new HashMap<String, Object>();
		map.put(XINGZUO_NAME, "双鱼座");
		map.put(MIN_DAY, 20);
		map.put(MAX_DAY, 20);
		map.put(MIN_MONTH, 2);
		map.put(MAX_MONTH, 3);
		list.add(map);

		return list;
	}
}



时间: 2024-10-27 02:24:37

给定公历日期计算12星座(Java代码实现)的相关文章

nyoj 219 An problem about date 日期计算 附加最优代码(基姆拉尔森公式)

第一次直接计算的   超时了.后来把天数存贮在数组中 也算过了 不知道这题为什么分类在动态规划里面 #include <stdio.h> int main() { int a[13]={0,31,29,31,30,31,30,31,31,30,31,30,31},year,mon,day; long long b[9605]={0},sum=0; for(int i=1600;i<9600;i++) { if(i%4==0&&i%100||i%400==0) sum+=3

Java日期计算之Joda-Time

http://rensanning.iteye.com/blog/1546652 Joda-Time提供了一组Java类包用于处理包括ISO8601标准在内的date和time.可以利用它把JDK Date和Calendar类完全替换掉,而且仍然能够提供很好的集成. http://joda-time.sourceforge.net/ 版本:joda-time-2.1.jar 1.时间类得作成 Java代码   //方法一:取系统点间 DateTime dt1 = new DateTime();

Java 根据给定的日期,计算两个日期之间的时间差

计算两个Date之间的时间差,基本思路为把Date转换为ms(微秒),然后计算两个微秒时间差. 时间的兑换规则如下: 1s秒 = 1000ms毫秒 1min分种 = 60s秒 1hours小时 = 60min分钟 1day天 = 24hours小时 package com.qiyadeng.date; import java.text.SimpleDateFormat; import java.util.Date; public class DateDifferentExample { publ

js 日期计算星座 根据生日的月份和日期,一行代码计算星座的js小函数(转)

本博客根据 开源中国作者清风徐不来 的文章 根据生日的月份和日期,一行代码计算星座的js小函数(转) 原文出自CSDN 无心的专栏 的文章,知识产权归原文作者所有! 点击查看原文:js 日期计算星座

java根据日期计算24节气

1 package com.test; 2 3 import java.util.Calendar; 4 import java.util.Date; 5 6 /** 7 * Created by json 8 */ 9 public class SolarTermsUtil { 10 /** 11 * 计算得到公历的年份 12 */ 13 private int gregorianYear; 14 15 /** 16 * 计算得到公历的月份 17 */ 18 private int grego

一行代码比较用户A和用户B的年龄大小(两个日期计算)

两个日期计算 用法: <edate [id=书包名] [list]> <we start="开始日期" end="结束日期" [format="yyyy-MM-dd HH:mm:ss.SSS"]/> </edate> ·        id:书包名,EDate标签返回的书包名称,可选,为空时书包名为标签名edate ·        list:列表,可选,要不要列出从开始到结束的所有日期 ·        st

java 给定一个日期期间 返回形如Mar 2015 3/20-3/31的数据

最近一个项目中有个前台对于表头要求: 给定一个日期期间返回形如 Mar 2015 3/20-3/31Apr 2015 4/1-4/30 这样的月年数据,简单的写了下代码,暂时没想到更好的办法 例如传进来的参数是 "2015-03-20"-"2016-04-08" 这样的形式 分三段处理: 第一段:起始日期的起始日期的月底 第二段:开始和结束月之间的所有月数据 第三段:结束日期的月初到结束日期 1 public List<String> loadMonth

java实现的日期计算

这里讲的日期计算比较偏,用到的地方很少(比如获取今天所在周的周一或者周日,获取今天是本月的第几周...),这些方法是以前做项目遗留下来的,现在整理一下,跟大家分享. 工具类主要有一下方法: public static Date getFirstMondayOfMonth(String dateString, String dateFormat) throws Exception 获取指定月份的第一个星期一,比如2014-12 月的第一个周一是2014-12-01 public static in

java用毫秒数做日期计算的一个踩坑记录

错误示例: Date today = new Date(); Date nextMonth = new Date(today.getTime() + 30* 1000*60*60*24); println(today); println(nextMonth); Result:  Sat Sep 30 11:18:24 CST 2017 Sun Sep 10 18:15:37 CST 2017 代码说明:上面代码的目的是计算一个月后的日期,从结果发现明显是错误的(回到上个月去了) 原因分析:30*