1992年阴历阳历对照表0521对应阳历

比较综合的阴历和阳历的java源程序 分享 - 谷普下载比较综合的阴历和阳历的java源程序点击复制内容
/************************************&及节日程序 2008 beta1&免费(Free Software) 你可以传播与反编译&该日历有三种外观样式,有从1900年至2049年间的所有&个人爱好开发& 作者:朱春 Email:&Copyright @ 2008- All Rights Reserved&FileName:Simple_Calendar&**********************************/import .text.*;import .awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;import javax.swing.*;public class Simple_Calendar extends JFrame implements ActionListener{
&public static void main(String[] args) {&&&&SwingConsole.run(new Simple_Calendar(),525,525);&}
&public Simple_Calendar() {&&setTitle(" 阴历及节日 2008 beta1");&&setIconImage(this.getToolkit().createImage("title.gif"));&&setResizable(false);&&calendar = Calendar.getInstance();&&today = calendar.get(Calendar.DAY_OF_MONTH);&&panel_Header=initializtion_Header();&&panel_Week =initializtion_Week();&&panel_Calendar=initializtion_Calendar();& &setLayout(null);&&setBounds(185,125,0,0);&&add(panel_Header);panel_Calendar.setBounds(0 ,0& ,525 , 45);&&add(panel_Week);&&&& panel_Week.setBounds(0 ,45 ,525 , 35);&&&& add(panel_Calendar);panel_Calendar.setBounds(0 ,80 ,525 , 415) ;&&&& initializtion_Data(calendar);&&&& &&&&&}&&& private& JPanel initializtion_Header(){//显示表头的panel&&&&&& &&& &JPanel panel = new JPanel();&&& &year_box& = new& JComboBox();&&& &month_box = new JComboBox();&&& &cross=new JRadioButton("c",false);cross.addActionListener(new LookAndFeel_Listener());&&& &system=new JRadioButton("s",false);system.addActionListener(new LookAndFeel_Listener());&&& &motif=new JRadioButton("m",false);motif.addActionListener(new LookAndFeel_Listener());&&& &feel_group= new ButtonGroup();&&& &show_help = new JButton("说 明");&&& &&&& &show_help.addActionListener(new Statement_Listener());&&& &&&& &feel_group.add(cross);feel_group.add(system);feel_group.add(motif); &&& &panel.setBorder(new EtchedBorder(5,Color.red,Color.BLUE));&&& &JLabel year_l = new JLabel("请您选择年份: ",JLabel.RIGHT);&&& &JLabel month_l = new JLabel("月份: ",JLabel.RIGHT);&&& &panel.setLayout(null);&&& &panel.setSize(525,45);&
&&& &for(int i = 1900 ;i & 2050 ; i++)&&& &&& year_box.addItem(""+i);&&& &for(int j = 1 ; j &= 12 ;j++)&&& &&& month_box.addItem(""+j) ;&&& &&& &year_box.setSelectedIndex(calendar.get(Calendar.YEAR)-1900);&&& &month_box.setSelectedIndex(calendar.get(Calendar.MONTH));&&& &panel.add(year_l);&&&&& year_l.setBounds(0,10,95,25);&&& &panel.add(year_box);& year_box.setBounds(100,10,65,25);&&& &panel.add(month_l);&&& month_l.setBounds(160,10,45,25);&&& &panel.add(month_box);month_box.setBounds(210,10,45,25);&&& &JLabel look_feel = new JLabel("外观:",JLabel.RIGHT);&&& &panel.add(look_feel);look_feel.setBounds(290-38,10,38,25);&&& &panel.add(cross);&&&&&& cross.setBounds(290,10,38,25);&&& &panel.add(system);&&&& system.setBounds(325,10,32,25);&&& &panel.add(motif);&&&&&& motif.setBounds(355,10,38,25);&&& &panel.add(show_help);& show_help.setBounds(400,10,65,25);&&& &show_help.setBorder(new EmptyBorder(0,0,0,0));&&& &show_help.setBackground(Color.getHSBColor(23,21,10));&&& &year_box.addActionListener(this);&&& &month_box.addActionListener(this);&&& &&&& }&&& private JPanel initializtion_Week(){//显示星期的panel&&JPanel panel = new JPanel();&&&&panel.setLayout(new GridLayout(1,7));&&&&String columnNames[]={"星期日","星期一","星期二","星期三",&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "星期四","星期五","星期六"};&&&&&&& JLabel label =&&&&&&& for(int i=0;i&7;i++){&&&&&&& &label = new JLabel(columnNames[i],JLabel.CENTER);&&&&&&& &if(i == 0 || i == 6)&&&&&&& && label.setForeground(Color.RED);&&&&&&& &label.setBorder(new LineBorder(Color.BLUE));&&&&&&& &panel.add(label);&&&&&&& }&&&&&&&&}&&& private JPanel initializtion_Calendar(){//显示日期的panel&&&&&&& JPanel panel = new JPanel();&&&&& &&&&&& &panel.setLayout(new GridLayout(6,7));&&&&&&& for( int i = 0 ; i & 6 ; i++ ){&&&&& &&& for(int j = 0 ; j & 7 ; j++ ){&&&&& &&&label=new JLabel("",JLabel.CENTER);&&&&& &&&&&&&& &&&datas[i][j] =&&&&& &&&label.setBorder(new LineBorder(Color.BLUE));&&&&& &&&if(j==0 || j==6)&&&&& &&&&& label.setForeground(Color.RED);& &&&&& &&&datas[i][j].addMouseListener(new List_MouseListener());&&&&& &&&panel.add(label);&&&&& &&}&&& &}&&& &&&& }&&& &&& public& void clear_Data(){//清空内容的&&& &for(int i = 0 ; i & 6 ; i++ )&&& & for(int j = 0 ; j & 7 ; j++ ){&&& & &datas[i][j].setText("");&&& & &if(j==0 || j==6)&&& & &&& datas[i][j].setForeground(Color.RED);&&& & &else&&& & &&& datas[i][j].setForeground(null);&&& & }&&& &&&&& &&& }&&& public& void initializtion_Data(Calendar calendar){//初始化函数&& ////////////////////////////////////////////////////&& ////////////////////////////////////////////////////////////&&& /* 节日和纪念日格式:起始年(yyyy)+月(mm)+日(dd)
0000表示起始年不明*/HashMap&String,String&& sFestival =new& HashMap&String,String&();//String []sFestival_={sFestival.put("0101","& 元旦");sFestival.put("0214","情人节");sFestival.put("0308","妇女节");sFestival.put("0312","植树节");sFestival.put("0401","愚人节");sFestival.put("0501","劳动节");sFestival.put("0504","青年节");sFestival.put("0601","儿童节");sFestival.put("0701","建党节");sFestival.put("0801","建军节");sFestival.put("0910","教师节");sFestival.put("1001","国庆节");sFestival.put("1031","万圣节");sFestival.put("1112","孙中山诞辰");sFestival.put("1225","圣诞节");sFestival.put("1226","毛泽东诞辰");//};//某月第几个星期几//起始年(4位)+月(2位)+第几个(1位)+星期几(1位)HashMap&String,String&& wFestival =new& HashMap&String,String&();//String []wFestival={wFestival.put("0520","母亲节");wFestival.put("0630","父亲节");wFestival.put("1144","感恩节");//};//农历 99表示月最后一天HashMap&String,String&& lFestival =new& HashMap&String,String&();//String []lFestival={lFestival.put("0101","春 节");lFestival.put("0102","大年初二");lFestival.put("0103","大年初三");lFestival.put("0115","元宵节");lFestival.put("0505","端午节");lFestival.put("0707","七 夕");lFestival.put("0815","中秋节");lFestival.put("0909","重阳节");lFestival.put("1208","腊八节");lFestival.put("1299","除 夕");//};&&& /////////////////////////////////////////////////////////////&&&
第 2 页 阴历2&& ////////////////////////////////////////////////////&&&&&& this.calendar =&&&&& today = calendar.get(Calendar.DAY_OF_MONTH);&&&&& int month = calendar.get(Calendar.MONTH);&&&&& int weekindexD&& int weekindexM&& && calendar.set(Calendar.DATE,1);&&&&while(calendar.get(Calendar.MONTH)==month)&&{&& weekindexMonth=calendar.get(Calendar.WEEK_OF_MONTH)-1;&&&&& weekindexDay=calendar.get(Calendar.DAY_OF_WEEK)-1;&&&&& int day=calendar.get(Calendar.DAY_OF_MONTH);&&&&& ///////////////////////////////////////////////&&&&& String today_,month_;&&&&& today_ =day & 10?& "0" + day:"" +&&&&& month_ =month&10?& "0" +(month+1):""+(month+1);&&&&& Lunar lunar = new Lunar(calendar);&&&&& String lunar_= lunar.toString();&&&&& ///////////////////////////////////////////&&&&& if( null != sFestival.get(month_+today_))&&&&&&&&&& lunar_="&font color=red&"+sFestival.get(month_+today_);&&&&& ///////&&&&& String wFestival_=month_+(weekindexMonth)+(weekindexDay);&&&&& &&&&& if( null != wFestival.get(wFestival_)){&&&&& &lunar_="&font color=red&"+wFestival.get(wFestival_);&&&&& &System.out.println(wFestival_);&&&&& }&&&&&&&&& &&&&& &&&&& &&&&& &&&&& if( null != lFestival.get(lunar.numeric_md()))&&&&&&&&& lunar_="&font color=red&"+lFestival.get(lunar.numeric_md());&&&&& &&&&& &&&&&&&&& &&&&& //计算除夕&&&&& Calendar temp_calendar = Calendar.getInstance();&&&&& temp_calendar.set(calendar.get(Calendar.YEAR),month,day+1);&&&&& &&&&& //temp_calendar.add(Calendar.DAY_OF_MONTH,1);&&&&& Lunar temp_lunar = new Lunar(temp_calendar);&&&&& String temp_str = temp_lunar.numeric_md();&&&&&& if(temp_str.equals("0101"))&&&&&&&&& lunar_="&font color=red&"+lFestival.get("1299");&&&&& ///计算除夕结束&&&&& //////////////////////////////////////////&&&&& String day_&&&&& if(day&10) day_str="&html&&center&&font size=6&"+today_;&&&&& else&&&&&& day_str="&html&&center&&font size=6&"+today_;&&&&& &&&&& day_str+="&/font&&br&"+lunar_;&&& &&&&& if(day==today)&&&&&&&& datas[weekindexMonth][weekindexDay].setForeground(Color.GREEN);&&&&& datas[weekindexMonth][weekindexDay].setText(day_str);&&&&& calendar.add(Calendar.DATE,1);&&}&&&& &&&& &&&& &&/////////////////////////////////////////////////&& &&&& }&&& public& void actionPerformed(ActionEvent e){//日期和年份的选择更新&&& &int year = Integer.parseInt(year_box.getSelectedItem().toString()) ;&&& &int month= Integer.parseInt(month_box.getSelectedItem().toString())-1 ;&&& &calendar.set(year,month,today);&&& &clear_Data();&&&&&&& initializtion_Data(calendar);&&& }&&& class LookAndFeel_Listener implements ActionListener{//选择外观的样式&public void actionPerformed(ActionEvent ev){&&JRadioButton o = (JRadioButton)ev.getSource();&&String str=o.getText();&&if("c" == str){&&&try {UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());&&&&&&&&&&& } catch(Exception e) { e.printStackTrace(); } &&}else if("s" == str){&&&try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());&&&&&&&&&&&& } catch(Exception e) {e.printStackTrace();}&&}else if("m" == str){&&&try{UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");}&&&&&&&&&&& catch(Exception e) {e.printStackTrace(); }&&} &&SwingUtilities.updateComponentTreeUI(Simple_Calendar.this);&& }&&&& }&&& class Statement_Listener implements ActionListener{//显示声明信息&&& &JDialog dialog=&&& &public void actionPerformed(ActionEvent ev){&&& && &String statment = "&html&阴历及节日程序 2008 beta1";&&& && & statment +="&br&免费软件(Free Software) 你可以传播与反编译."; &&& && & statment +="&br&该日历有三种外观样式,有从1900年至2049年间的所有阴历.";&&& && & statment +="&br&个人爱好开发& 作者:朱春 Email:";&&& && & statment +="&br&Copyright @ 2008- All Rights Reserved";&&& &&& dialog=new& JDialog(Simple_Calendar.this, "阴历及节日软件 2008 beta1",true); &&&&&&&&&&&&& dialog.setLayout(null);&&&&&&&&&&&&& dialog.setBounds(285,215,365,185);&&&&&&&&&&&&& JLabel label_s = new JLabel(statment);//label_s.setBackground(Color.RED);&&&&&&&&&&&&& JButton button=new JButton("确 定");&&&&&&&&&&&&& button.addActionListener(new ActionListener(){&&&&&&&&&&&&& &public void actionPerformed(ActionEvent evet){&&&&&&&&&&&&& &&& dialog.setVisible(false);&&&&&&&&&&&&& &}&&&&&&&&&&&&& });&&&&&&&&&&&&& dialog.add(label_s);label_s.setBounds(20,0,365,100);&&&&&&&&&&&&& dialog.add(button);& button.setBounds(145,110,65,25);&&&&&&&&&&&&& dialog.setVisible(true);&&& && }&&& &&&& }&&& class List_MouseListener implements MouseListener{//鼠标移入时显示的信息&&& &JLabel labe=&&& &String weeks[]={"星期日","星期一","星期二","星期三",&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "星期四","星期五","星期六"};&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&& public String constellation(Calendar cal){&& &&&&&&&&&&&&&&& String [][]con ={&&&&&&&&&&&&&&&&&&&& {"水瓶座","0122","0221"},&&&&&&&&&&&&&&&&&&&& {"双鱼座","0222","0321"},&&&&&&&&&&&&&&&&&&&& {"白羊座","0322","0420"}, &&&&&&&&&&&&&&&&&&&& {"金牛座","0421","0521"}, &&&&&&&&&&&&&&&&&&&& {"双子座","0522","0621"}, &&&&&&&&&&&&&&&&&&&& {"巨蟹座","0621","0721"}, &&&&&&&&&&&&&&&&&&&& {"狮子座","0722","0821"}, &&&&&&&&&&&&&&&&&&&& {"处女座","0822","0921"},& &&&&&&&&&&&&&&&&&&&& {"天秤座","0922","1021"}, &&&&&&&&&&&&&&&&&&&& {"天蝎座","1022","1121"}, &&&&&&&&&&&&&&&&&&&& {"射手座","1122","1221"}, &&&&&&&&&&&&&&&&&&&& {"摩羯座","1222","0121"}};&&&&&&&&&&&&&&& int month=cal.get(Calendar.MONTH)+1;&&&&&&&&&&&&&&& int today=cal.get(Calendar.DAY_OF_MONTH);&&&&&&&&&&&&&&& String month_str=month&10?"0"+month:""+&&&&&&&&&&&&&&& String today_str=today&10?"0"+today:""+&&&&&&&&&&&&&&& String str=month_str+today_&&&&&&&&&&&&&&& for( int i = 0 ; i & con.length-1 ; i++ )&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&& if(Integer.parseInt(str) &= Integer.parseInt(con[i][1]) && Integer.parseInt(str) &= Integer.parseInt(con[i][2]))&&&&&&&&&&&&&&&&&&&&&&& return con[i][0];&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& if((Integer.parseInt(str) &= Integer.parseInt(con[11][1]) && Integer.parseInt(str) & 1232) ||& Integer.parseInt(str) &=Integer.parseInt( con[11][2]) )&&&&&&&&&&&&&&&&&& return& con[11][0];&&&&&&& &&&&&&&&&&&&&& return "error!";&&&&&&& }&&&&&&& &&& &public void mouseClicked(MouseEvent e) {//鼠标按键在组件上单击(按下并释放)时调用。&&& &&&& &&&&&&& }&&&& &&&&&&& public void mouseEntered(MouseEvent e) {//鼠标进入到组件上时调用。 &&&&&&&&&&&& labe=(JLabel)e.getSource();&&&&&&&&&&&& String lab =labe.getText();&&&&&&&&&&&& if(lab != ""){&&&&&&&&&&&& &labe.setBackground(Color.red);&&&&&&&&&&&& &String day=lab.substring(lab.indexOf("size=6&")+7,lab.indexOf("&/font&"));&&&&&&&&&&&&&&& //String lun=lab.substring(lab.indexOf("&br&")+4);&&&&&&&&&&&&&&& String message = "&html&&body&&center&公元 "+year_box.getSelectedItem()+"年"+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& month_box.getSelectedItem()+"月"+Integer.parseInt(day)+"日";&&&&&&&&&&&&&&& calendar.set(Integer.parseInt(year_box.getSelectedItem().toString()),&&&&&&&&&&&&&&&&&&&&&&&&&&&& Integer.parseInt(month_box.getSelectedItem().toString())-1,&&&&&&&&&&&&&&&&&&&&&&&&&&&& Integer.parseInt(day));&&&&&&&&&&&&&&& Lunar lunar=new Lunar(calendar);&&&&&&&&&&&&&&& message+="&br&&font color=red&"+weeks[(calendar.get(calendar.DAY_OF_WEEK)-1)];&&&&&&&&&&&&&&& message+="&&&&"+constellation(calendar)+"&/font&&br&农历 ";&&&&&&&&&&&&&&& message+=lunar.get_month()+"月"+lunar.get_Big_Or_Small()+"&&&&"+lunar.get_date()+"日";&&&&&&&&&&&&&&& //message+=lunar.get_JQ();&&&&&&&&&&&&&&& labe.setToolTipText(message);&&&&&&&&&&&&&&& labe.setBackground(Color.BLUE);&&&&&&&&&&&&&&& labe.setOpaque(true);&&&&&&&&&&&&&& // System.out.println(day+":"+lun);&&&&&&&&&&&& }&&&&&&&&&&&& &&&&&&& }& &&&&&&& public void mouseExited(MouseEvent e) {//& 鼠标离开组件时调用。&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&& labe.setBackground(null);&&&&&&&&&&&&&&&&&&&&&&& labe.setOpaque(true);&&&&&&& }&&&&&&& public void mousePressed(MouseEvent e) {//& 鼠标按键在组件上按下时调用。 &&&&&&& &&&&&&& }&&&&&&& public void mouseReleased(MouseEvent e) {//& 鼠标按钮在组件上释放时调用。 &&&&&&& }
&&& }&&& /////////////////////////////////////////////////////////&&& private JLabel datas[][]=new JLabel[6][7];//显示一月的日期&&& private JLabel temp_label=&&& private& JLabel label=&&& private JPanel panel_Header,panel_Week,panel_C&&& private Calendar calendar=&&& private& JComboBox& year_box =&&& private& JComboBox month_box =&&& &&& private JRadioButton cross=null,system=null,motif=&&& private ButtonGroup feel_group=&&& private JButton show_help =&&& &&& &}
第 3 页 阴历3
/*&*以下是阴历对象;&* 是从网络中得来的;&*/& class& Lunar& { &&&& private&& int&&&&& private&& int&&&&& private&& int&&&&& private&& boolean&&&&& final&& static& String chineseNumber[]& =&& { "一","二","三","四","五","六","七","八","九","十","十一","十二"};&&&& final&& static& String Big_Or_Small[]& =&&& { "大","小","大","小","大","小","大","大","小","大","小"& ,"大"};&&&& private String[] LunarHolDayName = &&&&&&&&&&& { &&&&&&&&&&&&&&& "小寒", "大寒", "立春", "雨水", &&&&&&&&&&&&&&& "惊蛰", "春分", "清明", "谷雨", &&&&&&&&&&&&&&& "立夏", "小满", "芒种", "夏至", &&&&&&&&&&&&&&& "小暑", "大暑", "立秋", "处暑", &&&&&&&&&&&&&&& "白露", "秋分", "寒露", "霜降", &&&&&&&&&&&&&&& "立冬", "小雪", "大雪", "冬至"};
&&&& &&&& static& SimpleDateFormat chineseDateFormat& =&& new& SimpleDateFormat( " yyyy年MM月dd日 " );&&&& final&& static&& long [] lunarInfo& =&& new&& long [] &&&& { 0x04bd8 ,& 0x04ae0 ,& 0x0a570 ,& 0x054d5 ,& 0x0d260 ,& 0x0d950 ,& 0x16554 ,& 0x056a0 ,& 0x09ad0 ,& 0x055d2 ,&&&&& 0x04ae0 ,& 0x0a5b6 ,& 0x0a4d0 ,& 0x0d250 ,& 0x1d255 ,& 0x0b540 ,& 0x0d6a0 ,& 0x0ada2 ,& 0x095b0 ,& 0x14977 ,&&&&& 0x04970 ,& 0x0a4b0 ,& 0x0b4b5 ,& 0x06a50 ,& 0x06d40 ,& 0x1ab54 ,& 0x02b60 ,& 0x09570 ,& 0x052f2 ,& 0x04970 ,&&&&& 0x06566 ,& 0x0d4a0 ,& 0x0ea50 ,& 0x06e95 ,& 0x05ad0 ,& 0x02b60 ,& 0x186e3 ,& 0x092e0 ,& 0x1c8d7 ,& 0x0c950 ,&&&&& 0x0d4a0 ,& 0x1d8a6 ,& 0x0b550 ,& 0x056a0 ,& 0x1a5b4 ,& 0x025d0 ,& 0x092d0 ,& 0x0d2b2 ,& 0x0a950 ,& 0x0b557 ,&&&&& 0x06ca0 ,& 0x0b550 ,& 0x15355 ,& 0x04da0 ,& 0x0a5d0 ,& 0x14573 ,& 0x052d0 ,& 0x0a9a8 ,& 0x0e950 ,& 0x06aa0 ,&&&&& 0x0aea6 ,& 0x0ab50 ,& 0x04b60 ,& 0x0aae4 ,& 0x0a570 ,& 0x05260 ,& 0x0f263 ,& 0x0d950 ,& 0x05b57 ,& 0x056a0 ,&&&&& 0x096d0 ,& 0x04dd5 ,& 0x04ad0 ,& 0x0a4d0 ,& 0x0d4d4 ,& 0x0d250 ,& 0x0d558 ,& 0x0b540 ,& 0x0b5a0 ,& 0x195a6 ,&&&&& 0x095b0 ,& 0x049b0 ,& 0x0a974 ,& 0x0a4b0 ,& 0x0b27a ,& 0x06a50 ,& 0x06d40 ,& 0x0af46 ,& 0x0ab60 ,& 0x09570 ,&&&&& 0x04af5 ,& 0x04970 ,& 0x064b0 ,& 0x074a3 ,& 0x0ea50 ,& 0x06b58 ,& 0x055c0 ,& 0x0ab60 ,& 0x096d5 ,& 0x092e0 ,&&&&& 0x0c960 ,& 0x0d954 ,& 0x0d4a0 ,& 0x0da50 ,& 0x07552 ,& 0x056a0 ,& 0x0abb7 ,& 0x025d0 ,& 0x092d0 ,& 0x0cab5 ,&&&&& 0x0a950 ,& 0x0b4a0 ,& 0x0baa4 ,& 0x0ad50 ,& 0x055d9 ,& 0x04ba0 ,& 0x0a5b0 ,& 0x15176 ,& 0x052b0 ,& 0x0a930 ,&&&&& 0x07954 ,& 0x06aa0 ,& 0x0ad50 ,& 0x05b52 ,& 0x04b60 ,& 0x0a6e6 ,& 0x0a4e0 ,& 0x0d260 ,& 0x0ea65 ,& 0x0d530 ,&&&&& 0x05aa0 ,& 0x076a3 ,& 0x096d0 ,& 0x04bd7 ,& 0x04ad0 ,& 0x0a4d0 ,& 0x1d0b6 ,& 0x0d250 ,& 0x0d520 ,& 0x0dd45 ,&&&&& 0x0b5a0 ,& 0x056d0 ,& 0x055b2 ,& 0x049b0 ,& 0x0a577 ,& 0x0a4b0 ,& 0x0aa50 ,& 0x1b255 ,& 0x06d20 ,& 0x0ada0 } ;&&&&& &&&&&&&&& // ====== 传回农历 y年的总天数 &&&& final&& private&& static&& int& yearDays( int& y)& {&&&&&&&& int& i, sum& =&& 348 ;&&&&&&&& for& (i& =&& 0x8000 ; i& &&& 0x8 ; i& &&=&& 1 )& {&&&&&&&&&&&& if& ((lunarInfo[y& -&& 1900 ]& && i)& !=&& 0 ) sum& +=&& 1 ;&&&&&&& } &&&&&&&& return& (sum& +& leapDays(y));&&& }
&&&& // ====== 传回农历 y年闰月的天数 &&&& final&& private&& static&& int& leapDays( int& y)& {&&&&&&&& if& (leapMonth(y)& !=&& 0 )& {&&&&&&&&&&&& if& ((lunarInfo[y& -&& 1900 ]& &&& 0x10000 )& !=&& 0 )&&&&&&&&&&&&&&&& return&& 30 ;&&&&&&&&&&&& else &&&&&&&&&&&&&&&& return&& 29 ;&&&&&&& }&& else &&&&&&&&&&&& return&& 0 ;&&& }
&&&& // ====== 传回农历 y年闰哪个月 1-12 , 没闰传回 0 &&&& final&& private&& static&& int& leapMonth( int& y)& {&&&&&&&& return& ( int ) (lunarInfo[y& -&& 1900 ]& &&& 0xf );&&& }
&&&& // ====== 传回农历 y年m月的总天数 &&&& final&& private&& static&& int& monthDays( int& y,& int& m)& {&&&&&&&& if& ((lunarInfo[y& -&& 1900 ]& && ( 0x10000&& &&& m))& ==&& 0 )&&&&&&&&&&&& return&& 29 ;&&&&&&&& else &&&&&&&&&&&& return&& 30 ;&&& }
&&&& // ====== 传回农历 y年的生肖 &&&& final&& public& String animalsYear()& {&&&&&&&& final& String[] Animals& =&& new& String[] { "鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};&&&&&&& return& Animals[(year& -&& 4 )& %&& 12 ];&&& }
&&&& // ====== 传入 月日的offset 传回干支, 0=甲子 &&&& final&& private&& static& String cyclicalm( int& num)& {&&&&&&&& final& String[] Gan& =&& new& String[] { "甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};&&&&&&&& final& String[] Zhi& =&& new& String[] { "子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};&&&&&&&& return& (Gan[num& %&& 10 ]& +& Zhi[num& %&& 12 ]);&&& }
&&&& // ====== 传入 offset 传回干支, 0=甲子 &&&& final&& public& String cyclical()& {&&&&&&&& int& num& =& year& -&& 1900&& +&& 36 ;&&&&&&&& return& (cyclicalm(num));&&& }
&&&& /** */ /** &&&& * 传出y年m月d日对应的农历.&&&& * yearCyl3:农历年与1864的相差数&&&&&&&&&&&&& ?&&&& * monCyl4:从日以来,闰月数&&&& * dayCyl5:与日相差的天数,再加40&&&&& ?&&&& *& @param& cal &&&& *& @return& &&&&& */ &&&& public& Lunar(Calendar cal)& {&&&& &//cal.add(cal.get(Calendar.DAY_OF_MONTH),1);&&&&&&& @SuppressWarnings( " unused " )& int& yearCyl, monCyl, dayC&&&&&&&& int& leapMonth& =&& 0 ;&&&&&&& Date baseDate& =&&&&&&&&&& try&& {&&&&&&&&&&& baseDate& =& chineseDateFormat.parse( " 日 " );&&&&&&& }&& catch& (ParseException e)& {&&&&&&&&&&& e.printStackTrace();&& // To change body of catch statement use Options | File Templates. &&&&&&& }
&&&&&&&& // 求出和日相差的天数 &&&&&&&& int& offset& =& ( int ) ((cal.getTime().getTime()& -& baseDate.getTime())& /&& L );&&&&&&& dayCyl& =& offset& +&& 40 ;&&&&&&& monCyl& =&& 14 ;
&&&&&&&& // 用offset减去每农历年的天数&&&&&&&& //& 计算当天是农历第几天&&&&&&&& // i最终结果是农历的年份&&&&&&&& // offset是当年的第几天 &&&&&&&& int& iYear, daysOfYear& =&& 0 ;&&&&&&&& for& (iYear& =&& 1900 ; iYear& &&& 2050&& &&& offset& &&& 0 ; iYear ++ )& {&&&&&&&&&&& daysOfYear& =& yearDays(iYear);&&&&&&&&&&& offset& -=& daysOfY&&&&&&&&&&& monCyl& +=&& 12 ;&&&&&&& } &&&&&&&& if& (offset& &&& 0 )& {&&&&&&&&&&& offset& +=& daysOfY&&&&&&&&&&& iYear -- ;&&&&&&&&&&& monCyl& -=&& 12 ;&&&&&&& } &&&&&&&& // 农历年份 &&&&&&& year& =& iY
&&&&&&& yearCyl& =& iYear& -&& 1864 ;&&&&&&& leapMonth& =& leapMonth(iYear);& // 闰哪个月,1-12 &&&&&&& leap& =&&
&&&&&&&& // 用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天 &&&&&&&& int& iMonth, daysOfMonth& =&& 0 ;&&&&&&&& for& (iMonth& =&& 1 ; iMonth& &&& 13&& &&& offset& &&& 0 ; iMonth ++ )& {&&&&&&&&&&&& // 闰月 &&&&&&&&&&&& if& (leapMonth& &&& 0&& &&& iMonth& ==& (leapMonth& +&& 1 )& &&&& ! leap)& {&&&&&&&&&&&&&&&& -- iM&&&&&&&&&&&&&&& leap& =&&&&&&&&&&&&&&&&& daysOfMonth& =& leapDays(year);&&&&&&&&&&& }&& else &&&&&&&&&&&&&&& daysOfMonth& =& monthDays(year, iMonth);
&&&&&&&&&&& offset& -=& daysOfM&&&&&&&&&&&& // 解除闰月 &&&&&&&&&&&& if& (leap& &&& iMonth& ==& (leapMonth& +&& 1 )) leap& =&&&&&&&&&&&&&& if& ( ! leap) monCyl ++ ;&&&&&&& } &&&&&&&& // offset为0时,并且刚才计算的月份是闰月,要校正 &&&&&&&& if& (offset& ==&& 0&& &&& leapMonth& &&& 0&& &&& iMonth& ==& leapMonth& +&& 1 )& {&&&&&&&&&&&& if& (leap)& {&&&&&&&&&&&&&&& leap& =&&&&&&&&&&&&& }&& else&& {&&&&&&&&&&&&&&& leap& =&&&&&&&&&&&&&&&&&& -- iM&&&&&&&&&&&&&&&& -- monC&&&&&&&&&&& } &&&&&&& } &&&&&&&& // offset小于0时,也要校正 &&&&&&&& if& (offset& &&& 0 )& {&&&&&&&&&&& offset& +=& daysOfM&&&&&&&&&&&& -- iM&&&&&&&&&&&& -- monC&&&&&&& } &&&&&&& month& =& iM&&&&&&& day& =& offset& +&& 1 ;&&& }
&&&& public&& static& String getChinaDayString( int& day)& {&&&&&&& String chineseTen[]& =&& { "初" ,& "十" ,& "廿" ,& "卅" } ;&&&&&&&& int& n& =& day& %&& 10&& ==&& 0&& ?&& 9& : day& %&& 10&& -&& 1 ;&&&&&&&& if& (day& &&& 30 )&&&&&&&&&&&& return&& "" ;&&&&&&&& if& (day& ==&& 10 )&&&&&&&&&&&& return&& "初十" ;&&&&&&&& else &&&&&&&&&&&& return& chineseTen[day& /&& 10 ]& +& chineseNumber[n];&&& }
&&& public& String toString()& {&&&&&&&& return& /*cyclical() +&& "年"&& + */ (leap& ?&& "闰"& :& "" )& +& chineseNumber[month& -&& 1 ]& +&& "月"&& +& getChinaDayString(day);&&& } &&& public String numeric_md(){//返回阿拉伯数字的阴历日期&&& &String temp_&&& &String temp_&&& &temp_mon=month&10?"0"+month:""+&&& &temp_day=day & 10?"0"+ day:""+&&& &&&& &return temp_mon+temp_&&& }&&& public String get_month(){//返回阴历的月份&&& &return chineseNumber[month& -&& 1 ];&&& }&&& public String get_date(){//返回阴历的天&&& &return getChinaDayString(day);&&& }&&& public String get_Big_Or_Small(){//返回的月份的大或小&&& &return Big_Or_Small[month& -&& 1 ];&&& }&&& &&& }& class SwingConsole {//提供安全线程机制&public static void run(final JFrame f,final int width,final int height){&&SwingUtilities.invokeLater(new Runnable(){&&&public void run(){&&&&&&&f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&&&&f.setSize(width,height);&&&&f.setVisible(true);&&&}&&});&}}
/************************************&阴历及节日程序 2008 beta1&免费软件(Free Software) 你可以无限传播与反编译&该日历有三种外观样式,有从1900年至2049年间的所有阴历&个人爱好开发& 作者:朱春 Email:&Copyright @ 2008- All Rights Reserved&FileName:Simple_Calendar&**********************************/import java.text.*;import java.awt.*;import javax.swing.*;import java.awt.event.*;import javax.swing.border.*;import java.util.*;import javax.swing.*;public class Simple_Calendar extends JFrame implements ActionListener{
&public static void main(String[] args) {&&&&SwingConsole.run(new Simple_Calendar(),525,525);&}
&public Simple_Calendar() {&&setTitle(" 阴历及节日软件 2008 beta1");&&setIconImage(this.getToolkit().createImage("title.gif"));&&setResizable(false);&&calendar = Calendar.getInstance();&&today = calendar.get(Calendar.DAY_OF_MONTH);&&panel_Header=initializtion_Header();&&panel_Week =initializtion_Week();&&panel_Calendar=initializtion_Calendar();& &setLayout(null);&&setBounds(185,125,0,0);&&add(panel_Header);panel_Calendar.setBounds(0 ,0& ,525 , 45);&&add(panel_Week);&&&& panel_Week.setBounds(0 ,45 ,525 , 35);&&&& add(panel_Calendar);panel_Calendar.setBounds(0 ,80 ,525 , 415) ;&&&& initializtion_Data(calendar);&&&& &&&&&}&&& private& JPanel initializtion_Header(){//显示表头的panel&&&&&& &&& &JPanel panel = new JPanel();&&& &year_box& = new& JComboBox();&&& &month_box = new JComboBox();&&& &cross=new JRadioButton("c",false);cross.addActionListener(new LookAndFeel_Listener());&&& &system=new JRadioButton("s",false);system.addActionListener(new LookAndFeel_Listener());&&& &motif=new JRadioButton("m",false);motif.addActionListener(new LookAndFeel_Listener());&&& &feel_group= new ButtonGroup();&&& &show_help = new JButton("说 明");&&& &&&& &show_help.addActionListener(new Statement_Listener());&&& &&&& &feel_group.add(cross);feel_group.add(system);feel_group.add(motif); &&& &panel.setBorder(new EtchedBorder(5,Color.red,Color.BLUE));&&& &JLabel year_l = new JLabel("请您选择年份: ",JLabel.RIGHT);&&& &JLabel month_l = new JLabel("月份: ",JLabel.RIGHT);&&& &panel.setLayout(null);&&& &panel.setSize(525,45);&
&&& &for(int i = 1900 ;i & 2050 ; i++)&&& &&& year_box.addItem(""+i);&&& &for(int j = 1 ; j &= 12 ;j++)&&& &&& month_box.addItem(""+j) ;&&& &&& &year_box.setSelectedIndex(calendar.get(Calendar.YEAR)-1900);&&& &month_box.setSelectedIndex(calendar.get(Calendar.MONTH));&&& &panel.add(year_l);&&&&& year_l.setBounds(0,10,95,25);&&& &panel.add(year_box);& year_box.setBounds(100,10,65,25);&&& &panel.add(month_l);&&& month_l.setBounds(160,10,45,25);&&& &panel.add(month_box);month_box.setBounds(210,10,45,25);&&& &JLabel look_feel = new JLabel("外观:",JLabel.RIGHT);&&& &panel.add(look_feel);look_feel.setBounds(290-38,10,38,25);&&& &panel.add(cross);&&&&&& cross.setBounds(290,10,38,25);&&& &panel.add(system);&&&& system.setBounds(325,10,32,25);&&& &panel.add(motif);&&&&&& motif.setBounds(355,10,38,25);&&& &panel.add(show_help);& show_help.setBounds(400,10,65,25);&&& &show_help.setBorder(new EmptyBorder(0,0,0,0));&&& &show_help.setBackground(Color.getHSBColor(23,21,10));&&& &year_box.addActionListener(this);&&& &month_box.addActionListener(this);&&& &&&& }&&& private JPanel initializtion_Week(){//显示星期的panel&&JPanel panel = new JPanel();&&&&panel.setLayout(new GridLayout(1,7));&&&&String columnNames[]={"星期日","星期一","星期二","星期三",&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "星期四","星期五","星期六"};&&&&&&& JLabel label =&&&&&&& for(int i=0;i&7;i++){&&&&&&& &label = new JLabel(columnNames[i],JLabel.CENTER);&&&&&&& &if(i == 0 || i == 6)&&&&&&& && label.setForeground(Color.RED);&&&&&&& &label.setBorder(new LineBorder(Color.BLUE));&&&&&&& &panel.add(label);&&&&&&& }&&&&&&&&}&&& private JPanel initializtion_Calendar(){//显示日期的panel&&&&&&& JPanel panel = new JPanel();&&&&& &&&&&& &panel.setLayout(new GridLayout(6,7));&&&&&&& for( int i = 0 ; i & 6 ; i++ ){&&&&& &&& for(int j = 0 ; j & 7 ; j++ ){&&&&& &&&label=new JLabel("",JLabel.CENTER);&&&&& &&&&&&&& &&&datas[i][j] =&&&&& &&&label.setBorder(new LineBorder(Color.BLUE));&&&&& &&&if(j==0 || j==6)&&&&& &&&&& label.setForeground(Color.RED);& &&&&& &&&datas[i][j].addMouseListener(new List_MouseListener());&&&&& &&&panel.add(label);&&&&& &&}&&& &}&&& &&&& }&&& &&& public& void clear_Data(){//清空内容的&&& &for(int i = 0 ; i & 6 ; i++ )&&& & for(int j = 0 ; j & 7 ; j++ ){&&& & &datas[i][j].setText("");&&& & &if(j==0 || j==6)&&& & &&& datas[i][j].setForeground(Color.RED);&&& & &else&&& & &&& datas[i][j].setForeground(null);&&& & }&&& &&&&& &&& }&&& public& void initializtion_Data(Calendar calendar){//初始化函数&& ////////////////////////////////////////////////////&& ////////////////////////////////////////////////////////////&&& /* 节日和纪念日格式:起始年(yyyy)+月(mm)+日(dd)
0000表示起始年不明*/HashMap&String,String&& sFestival =new& HashMap&String,String&();//String []sFestival_={sFestival.put("0101","& 元旦");sFestival.put("0214","情人节");sFestival.put("0308","妇女节");sFestival.put("0312","植树节");sFestival.put("0401","愚人节");sFestival.put("0501","劳动节");sFestival.put("0504","青年节");sFestival.put("0601","儿童节");sFestival.put("0701","建党节");sFestival.put("0801","建军节");sFestival.put("0910","教师节");sFestival.put("1001","国庆节");sFestival.put("1031","万圣节");sFestival.put("1112","孙中山诞辰");sFestival.put("1225","圣诞节");sFestival.put("1226","毛泽东诞辰");//};//某月第几个星期几//起始年(4位)+月(2位)+第几个(1位)+星期几(1位)HashMap&String,String&& wFestival =new& HashMap&String,String&();//String []wFestival={wFestival.put("0520","母亲节");wFestival.put("0630","父亲节");wFestival.put("1144","感恩节");//};//农历 99表示月最后一天HashMap&String,String&& lFestival =new& HashMap&String,String&();//String []lFestival={lFestival.put("0101","春 节");lFestival.put("0102","大年初二");lFestival.put("0103","大年初三");lFestival.put("0115","元宵节");lFestival.put("0505","端午节");lFestival.put("0707","七 夕");lFestival.put("0815","中秋节");lFestival.put("0909","重阳节");lFestival.put("1208","腊八节");lFestival.put("1299","除 夕");//};&&& /////////////////////////////////////////////////////////////&&& && ////////////////////////////////////////////////////&&&&&& this.calendar =&&&&& today = calendar.get(Calendar.DAY_OF_MONTH);&&&&& int month = calendar.get(Calendar.MONTH);&&&&& int weekindexD&& int weekindexM&& && calendar.set(Calendar.DATE,1);&&&&while(calendar.get(Calendar.MONTH)==month)&&{&& weekindexMonth=calendar.get(Calendar.WEEK_OF_MONTH)-1;&&&&& weekindexDay=calendar.get(Calendar.DAY_OF_WEEK)-1;&&&&& int day=calendar.get(Calendar.DAY_OF_MONTH);&&&&& ///////////////////////////////////////////////&&&&& String today_,month_;&&&&& today_ =day & 10?& "0" + day:"" +&&&&& month_ =month&10?& "0" +(month+1):""+(month+1);&&&&& Lunar lunar = new Lunar(calendar);&&&&& String lunar_= lunar.toString();&&&&& ///////////////////////////////////////////&&&&& if( null != sFestival.get(month_+today_))&&&&&&&&&& lunar_="&font color=red&"+sFestival.get(month_+today_);&&&&& ///////&&&&& String wFestival_=month_+(weekindexMonth)+(weekindexDay);&&&&& &&&&& if( null != wFestival.get(wFestival_)){&&&&& &lunar_="&font color=red&"+wFestival.get(wFestival_);&&&&& &System.out.println(wFestival_);&&&&& }&&&&&&&&& &&&&& &&&&& &&&&& &&&&& if( null != lFestival.get(lunar.numeric_md()))&&&&&&&&& lunar_="&font color=red&"+lFestival.get(lunar.numeric_md());&&&&& &&&&& &&&&&&&&& &&&&& //计算除夕&&&&& Calendar temp_calendar = Calendar.getInstance();&&&&& temp_calendar.set(calendar.get(Calendar.YEAR),month,day+1);&&&&& &&&&& //temp_calendar.add(Calendar.DAY_OF_MONTH,1);&&&&& Lunar temp_lunar = new Lunar(temp_calendar);&&&&& String temp_str = temp_lunar.numeric_md();&&&&&& if(temp_str.equals("0101"))&&&&&&&&& lunar_="&font color=red&"+lFestival.get("1299");&&&&& ///计算除夕结束&&&&& //////////////////////////////////////////&&&&& String day_&&&&& if(day&10) day_str="&html&&center&&font size=6&"+today_;&&&&& else&&&&&& day_str="&html&&center&&font size=6&"+today_;&&&&& &&&&& day_str+="&/font&&br&"+lunar_;&&& &&&&& if(day==today)&&&&&&&& datas[weekindexMonth][weekindexDay].setForeground(Color.GREEN);&&&&& datas[weekindexMonth][weekindexDay].setText(day_str);&&&&& calendar.add(Calendar.DATE,1);&&}&&&& &&&& &&&& &&/////////////////////////////////////////////////&& &&&& }&&& public& void actionPerformed(ActionEvent e){//日期和年份的选择更新&&& &int year = Integer.parseInt(year_box.getSelectedItem().toString()) ;&&& &int month= Integer.parseInt(month_box.getSelectedItem().toString())-1 ;&&& &calendar.set(year,month,today);&&& &clear_Data();&&&&&&& initializtion_Data(calendar);&&& }&&& class LookAndFeel_Listener implements ActionListener{//选择外观的样式&public void actionPerformed(ActionEvent ev){&&JRadioButton o = (JRadioButton)ev.getSource();&&String str=o.getText();&&if("c" == str){&&&try {UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());&&&&&&&&&&& } catch(Exception e) { e.printStackTrace(); } &&}else if("s" == str){&&&try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());&&&&&&&&&&&& } catch(Exception e) {e.printStackTrace();}&&}else if("m" == str){&&&try{UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");}&&&&&&&&&&& catch(Exception e) {e.printStackTrace(); }&&} &&SwingUtilities.updateComponentTreeUI(Simple_Calendar.this);&& }&&&& }&&& class Statement_Listener implements ActionListener{//显示声明信息&&& &JDialog dialog=&&& &public void actionPerformed(ActionEvent ev){&&& && &String statment = "&html&阴历及节日程序 2008 beta1";&&& && & statment +="&br&免费软件(Free Software) 你可以无限传播与反编译."; &&& && & statment +="&br&该日历有三种外观样式,有从1900年至2049年间的所有阴历.";&&& && & statment +="&br&个人爱好开发& 作者:朱春 Email:";&&& && & statment +="&br&Copyright @ 2008- All Rights Reserved";&&& &&& dialog=new& JDialog(Simple_Calendar.this, "阴历及节日软件 2008 beta1",true); &&&&&&&&&&&&& dialog.setLayout(null);&&&&&&&&&&&&& dialog.setBounds(285,215,365,185);&&&&&&&&&&&&& JLabel label_s = new JLabel(statment);//label_s.setBackground(Color.RED);&&&&&&&&&&&&& JButton button=new JButton("确 定");&&&&&&&&&&&&& button.addActionListener(new ActionListener(){&&&&&&&&&&&&& &public void actionPerformed(ActionEvent evet){&&&&&&&&&&&&& &&& dialog.setVisible(false);&&&&&&&&&&&&& &}&&&&&&&&&&&&& });&&&&&&&&&&&&& dialog.add(label_s);label_s.setBounds(20,0,365,100);&&&&&&&&&&&&& dialog.add(button);& button.setBounds(145,110,65,25);&&&&&&&&&&&&& dialog.setVisible(true);&&& && }&&& &&&& }&&& class List_MouseListener implements MouseListener{//鼠标移入时显示的信息&&& &JLabel labe=&&& &String weeks[]={"星期日","星期一","星期二","星期三",&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& "星期四","星期五","星期六"};&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&& public String constellation(Calendar cal){&& &&&&&&&&&&&&&&& String [][]con ={&&&&&&&&&&&&&&&&&&&& {"水瓶座","0122","0221"},&&&&&&&&&&&&&&&&&&&& {"双鱼座","0222","0321"},&&&&&&&&&&&&&&&&&&&& {"白羊座","0322","0420"}, &&&&&&&&&&&&&&&&&&&& {"金牛座","0421","0521"}, &&&&&&&&&&&&&&&&&&&& {"双子座","0522","0621"}, &&&&&&&&&&&&&&&&&&&& {"巨蟹座","0621","0721"}, &&&&&&&&&&&&&&&&&&&& {"狮子座","0722","0821"}, &&&&&&&&&&&&&&&&&&&& {"处女座","0822","0921"},& &&&&&&&&&&&&&&&&&&&& {"天秤座","0922","1021"}, &&&&&&&&&&&&&&&&&&&& {"天蝎座","1022","1121"}, &&&&&&&&&&&&&&&&&&&& {"射手座","1122","1221"}, &&&&&&&&&&&&&&&&&&&& {"摩羯座","1222","0121"}};&&&&&&&&&&&&&&& int month=cal.get(Calendar.MONTH)+1;&&&&&&&&&&&&&&& int today=cal.get(Calendar.DAY_OF_MONTH);&&&&&&&&&&&&&&& String month_str=month&10?"0"+month:""+&&&&&&&&&&&&&&& String today_str=today&10?"0"+today:""+&&&&&&&&&&&&&&& String str=month_str+today_&&&&&&&&&&&&&&& for( int i = 0 ; i & con.length-1 ; i++ )&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&& if(Integer.parseInt(str) &= Integer.parseInt(con[i][1]) && Integer.parseInt(str) &= Integer.parseInt(con[i][2]))&&&&&&&&&&&&&&&&&&&&&&& return con[i][0];&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& if((Integer.parseInt(str) &= Integer.parseInt(con[11][1]) && Integer.parseInt(str) & 1232) ||& Integer.parseInt(str) &=Integer.parseInt( con[11][2]) )&&&&&&&&&&&&&&&&&& return& con[11][0];&&&&&&& &&&&&&&&&&&&&& return "error!";&&&&&&& }&&&&&&& &&& &public void mouseClicked(MouseEvent e) {//鼠标按键在组件上单击(按下并释放)时调用。&&& &&&& &&&&&&& }&&&& &&&&&&& public void mouseEntered(MouseEvent e) {//鼠标进入到组件上时调用。 &&&&&&&&&&&& labe=(JLabel)e.getSource();&&&&&&&&&&&& String lab =labe.getText();&&&&&&&&&&&& if(lab != ""){&&&&&&&&&&&& &labe.setBackground(Color.red);&&&&&&&&&&&& &String day=lab.substring(lab.indexOf("size=6&")+7,lab.indexOf("&/font&"));&&&&&&&&&&&&&&& //String lun=lab.substring(lab.indexOf("&br&")+4);&&&&&&&&&&&&&&& String message = "&html&&body&&center&公元 "+year_box.getSelectedItem()+"年"+&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& month_box.getSelectedItem()+"月"+Integer.parseInt(day)+"日";&&&&&&&&&&&&&&& calendar.set(Integer.parseInt(year_box.getSelectedItem().toString()),&&&&&&&&&&&&&&&&&&&&&&&&&&&& Integer.parseInt(month_box.getSelectedItem().toString())-1,&&&&&&&&&&&&&&&&&&&&&&&&&&&& Integer.parseInt(day));&&&&&&&&&&&&&&& Lunar lunar=new Lunar(calendar);&&&&&&&&&&&&&&& message+="&br&&font color=red&"+weeks[(calendar.get(calendar.DAY_OF_WEEK)-1)];&&&&&&&&&&&&&&& message+="&&&&"+constellation(calendar)+"&/font&&br&农历 ";&&&&&&&&&&&&&&& message+=lunar.get_month()+"月"+lunar.get_Big_Or_Small()+"&&&&"+lunar.get_date()+"日";&&&&&&&&&&&&&&& //message+=lunar.get_JQ();&&&&&&&&&&&&&&& labe.setToolTipText(message);&&&&&&&&&&&&&&& labe.setBackground(Color.BLUE);&&&&&&&&&&&&&&& labe.setOpaque(true);&&&&&&&&&&&&&& // System.out.println(day+":"+lun);&&&&&&&&&&&& }&&&&&&&&&&&& &&&&&&& }& &&&&&&& public void mouseExited(MouseEvent e) {//& 鼠标离开组件时调用。&&&&&&&&&&&&&&&&&& &&&&&&&& &&&&&&&&&&&&&&&&&&&&&&& labe.setBackground(null);&&&&&&&&&&&&&&&&&&&&&&& labe.setOpaque(true);&&&&&&& }&&&&&&& public void mousePressed(MouseEvent e) {//& 鼠标按键在组件上按下时调用。 &&&&&&& &&&&&&& }&&&&&&& public void mouseReleased(MouseEvent e) {//& 鼠标按钮在组件上释放时调用。 &&&&&&& }
&&& }&&& /////////////////////////////////////////////////////////&&& private JLabel datas[][]=new JLabel[6][7];//显示一月的日期&&& private JLabel temp_label=&&& private& JLabel label=&&& private JPanel panel_Header,panel_Week,panel_C&&& private Calendar calendar=&&& private& JComboBox& year_box =&&& private& JComboBox month_box =&&& &&& private JRadioButton cross=null,system=null,motif=&&& private ButtonGroup feel_group=&&& private JButton show_help =&&& &&& &}
/*&*以下是阴历对象;&* 是从网络中得来的;&*/& class& Lunar& { &&&& private&& int&&&&& private&& int&&&&& private&& int&&&&& private&& boolean&&&&& final&& static& String chineseNumber[]& =&& { "一","二","三","四","五","六","七","八","九","十","十一","十二"};&&&& final&& static& String Big_Or_Small[]& =&&& { "大","小","大","小","大","小","大","大","小","大","小"& ,"大"};&&&& private String[] LunarHolDayName = &&&&&&&&&&& { &&&&&&&&&&&&&&& "小寒", "大寒", "立春", "雨水", &&&&&&&&&&&&&&& "惊蛰", "春分", "清明", "谷雨", &&&&&&&&&&&&&&& "立夏", "小满", "芒种", "夏至", &&&&&&&&&&&&&&& "小暑", "大暑", "立秋", "处暑", &&&&&&&&&&&&&&& "白露", "秋分", "寒露", "霜降", &&&&&&&&&&&&&&& "立冬", "小雪", "大雪", "冬至"};
&&&& &&&& static& SimpleDateFormat chineseDateFormat& =&& new& SimpleDateFormat( " yyyy年MM月dd日 " );&&&& final&& static&& long [] lunarInfo& =&& new&& long [] &&&& { 0x04bd8 ,& 0x04ae0 ,& 0x0a570 ,& 0x054d5 ,& 0x0d260 ,& 0x0d950 ,& 0x16554 ,& 0x056a0 ,& 0x09ad0 ,& 0x055d2 ,&&&&& 0x04ae0 ,& 0x0a5b6 ,& 0x0a4d0 ,& 0x0d250 ,& 0x1d255 ,& 0x0b540 ,& 0x0d6a0 ,& 0x0ada2 ,& 0x095b0 ,& 0x14977 ,&&&&& 0x04970 ,& 0x0a4b0 ,& 0x0b4b5 ,& 0x06a50 ,& 0x06d40 ,& 0x1ab54 ,& 0x02b60 ,& 0x09570 ,& 0x052f2 ,& 0x04970 ,&&&&& 0x06566 ,& 0x0d4a0 ,& 0x0ea50 ,& 0x06e95 ,& 0x05ad0 ,& 0x02b60 ,& 0x186e3 ,& 0x092e0 ,& 0x1c8d7 ,& 0x0c950 ,&&&&& 0x0d4a0 ,& 0x1d8a6 ,& 0x0b550 ,& 0x056a0 ,& 0x1a5b4 ,& 0x025d0 ,& 0x092d0 ,& 0x0d2b2 ,& 0x0a950 ,& 0x0b557 ,&&&&& 0x06ca0 ,& 0x0b550 ,& 0x15355 ,& 0x04da0 ,& 0x0a5d0 ,& 0x14573 ,& 0x052d0 ,& 0x0a9a8 ,& 0x0e950 ,& 0x06aa0 ,&&&&& 0x0aea6 ,& 0x0ab50 ,& 0x04b60 ,& 0x0aae4 ,& 0x0a570 ,& 0x05260 ,& 0x0f263 ,& 0x0d950 ,& 0x05b57 ,& 0x056a0 ,&&&&& 0x096d0 ,& 0x04dd5 ,& 0x04ad0 ,& 0x0a4d0 ,& 0x0d4d4 ,& 0x0d250 ,& 0x0d558 ,& 0x0b540 ,& 0x0b5a0 ,& 0x195a6 ,&&&&& 0x095b0 ,& 0x049b0 ,& 0x0a974 ,& 0x0a4b0 ,& 0x0b27a ,& 0x06a50 ,& 0x06d40 ,& 0x0af46 ,& 0x0ab60 ,& 0x09570 ,&&&&& 0x04af5 ,& 0x04970 ,& 0x064b0 ,& 0x074a3 ,& 0x0ea50 ,& 0x06b58 ,& 0x055c0 ,& 0x0ab60 ,& 0x096d5 ,& 0x092e0 ,&&&&& 0x0c960 ,& 0x0d954 ,& 0x0d4a0 ,& 0x0da50 ,& 0x07552 ,& 0x056a0 ,& 0x0abb7 ,& 0x025d0 ,& 0x092d0 ,& 0x0cab5 ,&&&&& 0x0a950 ,& 0x0b4a0 ,& 0x0baa4 ,& 0x0ad50 ,& 0x055d9 ,& 0x04ba0 ,& 0x0a5b0 ,& 0x15176 ,& 0x052b0 ,& 0x0a930 ,&&&&& 0x07954 ,& 0x06aa0 ,& 0x0ad50 ,& 0x05b52 ,& 0x04b60 ,& 0x0a6e6 ,& 0x0a4e0 ,& 0x0d260 ,& 0x0ea65 ,& 0x0d530 ,&&&&& 0x05aa0 ,& 0x076a3 ,& 0x096d0 ,& 0x04bd7 ,& 0x04ad0 ,& 0x0a4d0 ,& 0x1d0b6 ,& 0x0d250 ,& 0x0d520 ,& 0x0dd45 ,&&&&& 0x0b5a0 ,& 0x056d0 ,& 0x055b2 ,& 0x049b0 ,& 0x0a577 ,& 0x0a4b0 ,& 0x0aa50 ,& 0x1b255 ,& 0x06d20 ,& 0x0ada0 } ;&&&&& &&&&&&&&& // ====== 传回农历 y年的总天数 &&&& final&& private&& static&& int& yearDays( int& y)& {&&&&&&&& int& i, sum& =&& 348 ;&&&&&&&& for& (i& =&& 0x8000 ; i& &&& 0x8 ; i& &&=&& 1 )& {&&&&&&&&&&&& if& ((lunarInfo[y& -&& 1900 ]& && i)& !=&& 0 ) sum& +=&& 1 ;&&&&&&& } &&&&&&&& return& (sum& +& leapDays(y));&&& }
&&&& // ====== 传回农历 y年闰月的天数 &&&& final&& private&& static&& int& leapDays( int& y)& {&&&&&&&& if& (leapMonth(y)& !=&& 0 )& {&&&&&&&&&&&& if& ((lunarInfo[y& -&& 1900 ]& &&& 0x10000 )& !=&& 0 )&&&&&&&&&&&&&&&& return&& 30 ;&&&&&&&&&&&& else &&&&&&&&&&&&&&&& return&& 29 ;&&&&&&& }&& else &&&&&&&&&&&& return&& 0 ;&&& }
&&&& // ====== 传回农历 y年闰哪个月 1-12 , 没闰传回 0 &&&& final&& private&& static&& int& leapMonth( int& y)& {&&&&&&&& return& ( int ) (lunarInfo[y& -&& 1900 ]& &&& 0xf );&&& }
&&&& // ====== 传回农历 y年m月的总天数 &&&& final&& private&& static&& int& monthDays( int& y,& int& m)& {&&&&&&&& if& ((lunarInfo[y& -&& 1900 ]& && ( 0x10000&& &&& m))& ==&& 0 )&&&&&&&&&&&& return&& 29 ;&&&&&&&& else &&&&&&&&&&&& return&& 30 ;&&& }
&&&& // ====== 传回农历 y年的生肖 &&&& final&& public& String animalsYear()& {&&&&&&&& final& String[] Animals& =&& new& String[] { "鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};&&&&&&& return& Animals[(year& -&& 4 )& %&& 12 ];&&& }
&&&& // ====== 传入 月日的offset 传回干支, 0=甲子 &&&& final&& private&& static& String cyclicalm( int& num)& {&&&&&&&& final& String[] Gan& =&& new& String[] { "甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};&&&&&&&& final& String[] Zhi& =&& new& String[] { "子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};&&&&&&&& return& (Gan[num& %&& 10 ]& +& Zhi[num& %&& 12 ]);&&& }
&&&& // ====== 传入 offset 传回干支, 0=甲子 &&&& final&& public& String cyclical()& {&&&&&&&& int& num& =& year& -&& 1900&& +&& 36 ;&&&&&&&& return& (cyclicalm(num));&&& }
&&&& /** */ /** &&&& * 传出y年m月d日对应的农历.&&&& * yearCyl3:农历年与1864的相差数&&&&&&&&&&&&& ?&&&& * monCyl4:从日以来,闰月数&&&& * dayCyl5:与日相差的天数,再加40&&&&& ?&&&& *& @param& cal &&&& *& @return& &&&&& */ &&&& public& Lunar(Calendar cal)& {&&&& &//cal.add(cal.get(Calendar.DAY_OF_MONTH),1);&&&&&&& @SuppressWarnings( " unused " )& int& yearCyl, monCyl, dayC&&&&&&&& int& leapMonth& =&& 0 ;&&&&&&& Date baseDate& =&&&&&&&&&& try&& {&&&&&&&&&&& baseDate& =& chineseDateFormat.parse( " 日 " );&&&&&&& }&& catch& (ParseException e)& {&&&&&&&&&&& e.printStackTrace();&& // To change body of catch statement use Options | File Templates. &&&&&&& }
&&&&&&&& // 求出和日相差的天数 &&&&&&&& int& offset& =& ( int ) ((cal.getTime().getTime()& -& baseDate.getTime())& /&& L );&&&&&&& dayCyl& =& offset& +&& 40 ;&&&&&&& monCyl& =&& 14 ;
&&&&&&&& // 用offset减去每农历年的天数&&&&&&&& //& 计算当天是农历第几天&&&&&&&& // i最终结果是农历的年份&&&&&&&& // offset是当年的第几天 &&&&&&&& int& iYear, daysOfYear& =&& 0 ;&&&&&&&& for& (iYear& =&& 1900 ; iYear& &&& 2050&& &&& offset& &&& 0 ; iYear ++ )& {&&&&&&&&&&& daysOfYear& =& yearDays(iYear);&&&&&&&&&&& offset& -=& daysOfY&&&&&&&&&&& monCyl& +=&& 12 ;&&&&&&& } &&&&&&&& if& (offset& &&& 0 )& {&&&&&&&&&&& offset& +=& daysOfY&&&&&&&&&&& iYear -- ;&&&&&&&&&&& monCyl& -=&& 12 ;&&&&&&& } &&&&&&&& // 农历年份 &&&&&&& year& =& iY
&&&&&&& yearCyl& =& iYear& -&& 1864 ;&&&&&&& leapMonth& =& leapMonth(iYear);& // 闰哪个月,1-12 &&&&&&& leap& =&&
&&&&&&&& // 用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天 &&&&&&&& int& iMonth, daysOfMonth& =&& 0 ;&&&&&&&& for& (iMonth& =&& 1 ; iMonth& &&& 13&& &&& offset& &&& 0 ; iMonth ++ )& {&&&&&&&&&&&& // 闰月 &&&&&&&&&&&& if& (leapMonth& &&& 0&& &&& iMonth& ==& (leapMonth& +&& 1 )& &&&& ! leap)& {&&&&&&&&&&&&&&&& -- iM&&&&&&&&&&&&&&& leap& =&&&&&&&&&&&&&&&&& daysOfMonth& =& leapDays(year);&&&&&&&&&&& }&& else &&&&&&&&&&&&&&& daysOfMonth& =& monthDays(year, iMonth);
&&&&&&&&&&& offset& -=& daysOfM&&&&&&&&&&&& // 解除闰月 &&&&&&&&&&&& if& (leap& &&& iMonth& ==& (leapMonth& +&& 1 )) leap& =&&&&&&&&&&&&&& if& ( ! leap) monCyl ++ ;&&&&&&& } &&&&&&&& // offset为0时,并且刚才计算的月份是闰月,要校正 &&&&&&&& if& (offset& ==&& 0&& &&& leapMonth& &&& 0&& &&& iMonth& ==& leapMonth& +&& 1 )& {&&&&&&&&&&&& if& (leap)& {&&&&&&&&&&&&&&& leap& =&&&&&&&&&&&&& }&& else&& {&&&&&&&&&&&&&&& leap& =&&&&&&&&&&&&&&&&&& -- iM&&&&&&&&&&&&&&&& -- monC&&&&&&&&&&& } &&&&&&& } &&&&&&&& // offset小于0时,,也要校正 &&&&&&&& if& (offset& &&& 0 )& {&&&&&&&&&&& offset& +=& daysOfM&&&&&&&&&&&& -- iM&&&&&&&&&&&& -- monC&&&&&&& } &&&&&&& month& =& iM&&&&&&& day& =& offset& +&& 1 ;&&& }
&&&& public&& static& String getChinaDayString( int& day)& {&&&&&&& String chineseTen[]& =&& { "初" ,& "十" ,& "廿" ,& "卅" } ;&&&&&&&& int& n& =& day& %&& 10&& ==&& 0&& ?&& 9& : day& %&& 10&& -&& 1 ;&&&&&&&& if& (day& &&& 30 )&&&&&&&&&&&& return&& "" ;&&&&&&&& if& (day& ==&& 10 )&&&&&&&&&&&& return&& "初十" ;&&&&&&&& else &&&&&&&&&&&& return& chineseTen[day& /&& 10 ]& +& chineseNumber[n];&&& }
&&& public& String toString()& {&&&&&&&& return& /*cyclical() +&& "年"&& + */ (leap& ?&& "闰"& :& "" )& +& chineseNumber[month& -&& 1 ]& +&& "月"&& +& getChinaDayString(day);&&& } &&& public String numeric_md(){//返回阿拉伯数字的阴历日期&&& &String temp_&&& &String temp_&&& &temp_mon=month&10?"0"+month:""+&&& &temp_day=day & 10?"0"+ day:""+&&& &&&& &return temp_mon+temp_&&& }&&& public String get_month(){//返回阴历的月份&&& &return chineseNumber[month& -&& 1 ];&&& }&&& public String get_date(){//返回阴历的天&&& &return getChinaDayString(day);&&& }&&& public String get_Big_Or_Small(){//返回的月份的大或小&&& &return Big_Or_Small[month& -&& 1 ];&&& }&&& &&& }& class SwingConsole {//提供安全线程机制&public static void run(final JFrame f,final int width,final int height){&&SwingUtilities.invokeLater(new Runnable(){&&&public void run(){&&&&&&&f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&&&&f.setSize(width,height);&&&&f.setVisible(true);&&&}&&});&}}
来源:谷普下载

我要回帖

更多关于 阳历转阴历 的文章

 

随机推荐