一个简单的相对的较为完善的日期操作类
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());
}
}