码迷,mamicode.com
首页 > 其他好文 > 详细

干支纪年

时间:2015-02-13 18:44:39      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

package cn.bupt;

public class RiLi {
  public static String[] tiangan = {"庚","辛","壬","癸","甲","乙","丙","丁","戊","己"};//天干
  public static String[] tianganQ = {"辛","庚","己","戊","丁","丙","乙","甲","癸","壬"};//天干公元前
  public static String[] dizhi = {"申","酉","戌","亥","子","丑","寅","卯","辰","巳","午","未"};//地支
  public static String[] dizhiQ = {"酉","申","未","午","巳","辰","卯","寅","丑","子","亥","戌"};//地支公元前
  //公元元年对应西汉末期,公元1年,9岁的汉平帝刘衎登
  
  //
//	计算公式:[Y*D+C]-L
//	
//	  公式解读:数2位乘0.2422加3.87取整数减闰数21世纪C值=3.87 22世纪C值=4.15
//	
//	  举例说明:2058立春期计算步骤[58×.0.2422+3.87]-[(58-1)/4]=17-14=3则2月3立春
	public static void main(String[] args) {
		
/*		for(int i = 3000;i>0;i--){
			getGanZhi(i+"",true);
		}
		for(int i = 1;i<2016;i++){
			getGanZhi(i+"",false);
		}*/
		System.out.println(getliChun("2014"));
	}
	public static String getliChun(String myDate){
		int tian = Integer.parseInt(myDate.substring(myDate.length() - 2));
		float lic = (float) (tian * 0.2422 + 3.87 - ((tian - 1) / 4));

		return myDate + "年,立春是是2月" + (Math.floor(lic) + "").split("\\.")[0] + "号";
	}
	public static void getGanZhi(String myDate,boolean isQian){
		int tian = Integer.parseInt(myDate.substring(myDate.length() - 1));
		int di = Integer.parseInt(myDate) % 12;
		if (!isQian)
			System.out.println(myDate + "年,干支纪年是:" + tiangan[tian] + dizhi[di]);// 公元
		if (isQian)
			System.out.println("公元前 " + myDate + "年,干支纪年是:" + tianganQ[tian] + dizhiQ[di]);// 公元前
	}
}


干支纪年

标签:

原文地址:http://my.oschina.net/u/1447924/blog/378526

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!