专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »博文摘选 » java计算器:教师布置的一个小练习 java实现日期类的简单操作(java计算星期几 java计算后几天的日期) »正文

java计算器:教师布置的一个小练习 java实现日期类的简单操作(java计算星期几 java计算后几天的日期)

来源: 发布时间:星期日, 2009年10月11日 浏览:1次 评论:0

一个简单的相对的较为完善的日期操作类

package com.nileader.test;

import java.util.Scanner;


public class ICalendar {
   
    public static void main(String[] args) throws Exception
    {

        System.out.println("这是一个用JAVA实现的有关日期计算的程序 日期范围:1988-11-04到2088-11-04");
        OrderManager omsys = new OrderManager();
        omsys.showInitMsg();


        Scanner  cin = new  Scanner(System.in);
       
        while(cin.hasNext())    //循环进行
        {
           
            String orderStr = cin.next();
           
            if("E".equalsIgnoreCase(orderStr) )    //用户退出程序
            {
                omsys.showOverMsg();
                return;
            }
            //构造OrderManager对象操作
            new OrderManager( orderStr ).execute();
            //进行下次操作
            omsys.showInitMsg();  
        }
       

       
    }

}
======================================================

package com.nileader.test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.swing.JOptionPane;

class OrderManager {
   
    private String orderStr;    //用户输入的指令字符串
    private String msgOver ="感谢你的使用";      //程序结束信息
    private String orderList = "1.计算星期几(A)  1.计算某日期的后几天是什么日期(B) 1.推出程序(E)";     //程序的指令集
    /*
     * setter and getter
     */
    public String getOrderStr() {
        return orderStr;
    }
    public void setOrderStr(String orderStr) {
        this.orderStr = orderStr;
    }
    public String getMsgOver() {
        return msgOver;
    }
    public void setMsgOver(String msgOver) {
        this.msgOver = msgOver;
    }
    public String getOrderList() {
        return orderList;
    }
    public void setOrderList(String orderList) {
        this.orderList = orderList;
    }
   
   
   
    /*
     * 构造方法
     */
    public OrderManager(){    }
    public OrderManager(String orderStr)
    {
        this.setOrderStr(orderStr);
    }
   
   
   
/*
 * execute
 */
    public void execute() throws ParseException
    {
        DateFormat   df   =   new   SimpleDateFormat("yyyy-MM-dd");
       
        if("A".equalsIgnoreCase( this.getOrderStr() ))               //进行操作A
        {
            JOptionPane.showMessageDialog(null,"你选择了 1.计算星期几(A) 操作");
           
             //输入指定的年月日
            String yearStr = "";
            String monthStr = "";
            String dateStr = "";
           
            //输入并检验yearStr
            if(null != yearStr)
            {
            while(null != yearStr && ("".equals(yearStr)  || !this.isData(yearStr, 1988, 2088))  )
            yearStr = JOptionPane.showInputDialog(null,"请输入你要计算的年,如 1988");
            }
            if(null == yearStr) return;   //用户选择取消了
           
            //输入并检验monthStr
            if(null != monthStr)
            {
            while(null != monthStr && ("".equals(monthStr)  || !this.isData(monthStr, 1, 12))  )
            monthStr = JOptionPane.showInputDialog(null,"请输入你要计算的月,如 11");
            }
            if(null == monthStr) return;   //用户选择取消了
           
            //输入并检验dateStr
            if(null != dateStr)
            {
            while(null != dateStr && ("".equals(dateStr)  || !this.isData(dateStr, 1, 31))  )
            dateStr = JOptionPane.showInputDialog(null,"请输入你要计算的日,如 4");
            }
            if(null == dateStr) return;   //用户选择取消了
           
           
           
            String timeStr = yearStr+"-"+monthStr+"-"+dateStr;
            Calendar cal = Calendar.getInstance();
           
            //把timeStr转化成Date格式后设置时间
            cal.setTime ( df.parse(timeStr) );
           
             if( cal.get(Calendar.DAY_OF_WEEK) != 1)
                 JOptionPane.showMessageDialog(null,timeStr+"是星期"+(cal.get(Calendar.DAY_OF_WEEK)-1) );
             else
                 JOptionPane.showMessageDialog(null,timeStr+"是星期天" );
        }//A
       
       
       
           
            else if("B".equalsIgnoreCase( this.getOrderStr() ))               //进行操作B
            {
                JOptionPane.showMessageDialog(null,"你选择了 1.计算星期几(A) 操作");
               
                //输入指定的年月日
                String yearStr = "";
                String monthStr = "";
                String dateStr = "";
                String days ="";
                //输入并检验yearStr
                if(null != yearStr)
                {
                while(null != yearStr && ("".equals(yearStr)  || !this.isData(yearStr, 1988, 2088))  )
                yearStr = JOptionPane.showInputDialog(null,"请输入你要计算的年,如 1988");
                }
                if(null == yearStr) return;   //用户选择取消了
               
                //输入并检验monthStr
                if(null != monthStr)
                {
                while(null != monthStr && ("".equals(monthStr)  || !this.isData(monthStr, 1, 12))  )
                monthStr = JOptionPane.showInputDialog(null,"请输入你要计算的月,如 11");
                }
                if(null == monthStr) return;   //用户选择取消了
               
                //输入并检验dateStr
                if(null != dateStr)
                {
                while(null != dateStr && ("".equals(dateStr)  || !this.isData(dateStr, 1, 31))  )
                dateStr = JOptionPane.showInputDialog(null,"请输入你要计算的日,如 4");
                }
                if(null == dateStr) return;   //用户选择取消了
               
                //输入并检验days
                if(null != days)
                {
                while(null != days && ("".equals(days)  || !this.isData(days, 1, 1000))  )
                days = JOptionPane.showInputDialog(null,"请输入你要计算的日,1000以内哦,太大没意思的,如 4");
                }
                if(null == days) return;   //用户选择取消了
               
               
               
                  
                   String timeStr = yearStr+"-"+monthStr+"-"+dateStr;
                   
                    //把timeStr转化成Date格式后设置时间
                    Date date1 = (Date)df.parse(timeStr);

                   date1.setTime( date1.getTime() + Integer.parseInt(days)* 24 * 60 * 60 * 1000 );

                   String tenDaysAfterSomeDate=df.format(date1);

                   JOptionPane.showMessageDialog(null,tenDaysAfterSomeDate );
            }//B
           
            else
            {
                System.out.println("Sorry,无效指令");
            }
       
       
       
    }
   
    /*
     *  判断输入的是否为指定区域中的数值
     */
    public boolean isData(String str,int minVal,int maxVal)
    {
        try
        {
            return Integer.parseInt(str)<=maxVal && Integer.parseInt(str)>=minVal;
        }
        catch(NumberFormatException pe)
        {
            return false;
        }
           
    }
   
   
    /*
     * show init message
     */
    public void showInitMsg()
    {
        System.out.println("=========功能表=========(请键入功能代号)");
        System.out.println(this.getOrderList());
    }
   
    /*
     * show over message
     */
    public void showOverMsg()
    {
        System.out.println(this.getMsgOver());
    }


}

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: