⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dateop.java

📁 本人课程设计时做的一个用struts框架实现的基于cmmi2的项目管理系统的原型。还有部分功能尚未实现
💻 JAVA
字号:
package com.cmmi2pms.common;

import java.util.Date;
import java.util.Calendar;

public class DateOp
{
	public DateOp(){ }
	
	public static String parseYear(String ymd)	
	{
		return ymd.substring(0,4);
	}
	
	public static String parseMonth(String ymd)
	{
		String s=ymd.substring(5,7);
		if (s.substring(0,1).equals("0"))
		{
			return s.substring(1,2);
		}
		else
		{
			return s;
		}
	}
	
	public static String parseDate(String ymd)
	{
		String s=ymd.substring(8,10);
		if (s.substring(0,1).equals("0"))
		{
			return s.substring(1,2);
		}
		else
		{
			return s;
		}
	}
	
	public static int getNumOfMonth(int m,int year)
	{
		if (m==1||m==3||m==5||m==7||m==8||m==10||m==12)
		{
			return 31;
		}
		else if (m==4||m==6||m==9||m==11)
		{
			return 30;
		}
		else if (m==2)
		{
			if (year % 400==0 || year %4 ==0 && year % 100 !=0)
			{
				return 29;
			}
			else
			{
				return 28;
			}
		}
		return 0;	
	}
	
	public static int getTotal(String ymd1,String ymd2)
	{
		int total;
		if ( getDay(ymd1)!=1 )
			{
				if (getDay(ymd1)==0)
				{
					total=(subDayNum(ymd1,ymd2)-1)%7;
					if (total==0)
					{
						total=(subDayNum(ymd1,ymd2)-1)/7;
						if (total==0)
						{
							total++;
						}
					}
					else
					{
						total=(subDayNum(ymd1,ymd2)-1)/7+1;
					}	
				}
				else
				{
					total=(subDayNum(ymd1,ymd2)-7+getDay(ymd1))%7;
					if (total==0)
					{
						total=(subDayNum(ymd1,ymd2)-7+getDay(ymd1))/7;
						if (total==0)
						{
							return total++;
						}
					}
					else
					{
						total=(subDayNum(ymd1,ymd2)-7+getDay(ymd1))/7+1;
					}
				}
			}
			else
			{
				total=(subDayNum(ymd1,ymd2)-1)/7;
			}
			
		return total;
	}

//string类型(如2004-04-12)转换成datetime类型	
	public static Date getDate(String ymd)
	{
		int year=Integer.parseInt( parseYear(ymd) )-1900;
		int month=Integer.parseInt( parseMonth(ymd) )-1;
		int date=Integer.parseInt( parseDate(ymd) );
		return new Date(year,month,date);
	}
	
//datetime类型转换成String	
	public static String getDate(Date d)
	{
		String s;
		s=Integer.toString(d.getYear()+1900);
		s=s.concat("-");
		
		if ((d.getMonth()+1)<10)
		{
			s=s.concat("0");
		}
		s=s.concat(Integer.toString(d.getMonth()+1));
		s=s.concat("-");
		if (d.getDate()<10)
		{
			s=s.concat("0");
		}
		s=s.concat(Integer.toString(d.getDate()));
		return s;
	}

//判断某天是当月的第几周	
	public static int getWeek(String ymd)
	{
		Date d=getDate(ymd);
		int i;
		if (d.getDate() % 7 == 0)
		{
			i=d.getDate()/7;
		}
		else
		{
			i=d.getDate()/7 + 1;
		}
		return i;
	}

//判断某天是当月的星期几	
	public static int getDay(String ymd)
	{
		Date d=getDate(ymd);
		return d.getDay();
	}

//日期的加(如某天加若干天是哪天)	
	public  static Date dateAdd(String ymd,int num)
	{
		Date d=getDate(ymd);
		int total,mon,year;
		mon=d.getMonth()+1;
		year=d.getYear()+1900;
		total=num-(getNumOfMonth(mon,d.getYear()+1900)-d.getDate());
		if (mon==12)
		{
			year++;
			mon=1;
		}
		else
		{
			mon++;
		}
		while(total>0 && total<getNumOfMonth(mon,year))
		{
			total-=getNumOfMonth(mon,year);
			if (mon==12)
			{
				year++;
				mon=1;
			}
			else
			{
				mon++;
			}
		}
		return new Date(year-1900,mon-1,total);
	}
	
	public static Date dateAdd(Date d,int num)
	{
		return dateAdd(getDate(d),num);
	}
//日期的减(如某天减若干天是哪天)	
	public  static Date dateDel(String ymd,int num)
	{
		Date d=getDate(ymd);
		int total,mon,year;
		mon=d.getMonth()+1;
		year=d.getYear()+1900;
		total=num-d.getDate();
		if (mon==1)
		{
			year--;
			mon=12;
		}
		else
		{
			mon--;
		}
		while(total>0 && total<getNumOfMonth(mon,year))
		{
			total-=getNumOfMonth(mon,year);
			if (mon==1)
			{
				year--;
				mon=12;
			}
			else
			{
				mon--;
			}
		}
		return new Date(year-1900,mon-1,getNumOfMonth(mon,year)-total);
	} 

//计算两个时间区间有多少天(如2004-01-21到2004-05-12)	
	public static int subDayNum(String ymd1,String ymd2)
	{
		Date d1=getDate(ymd1);
		Date d2=getDate(ymd2);
		int total=0,year1,year2,mon1,mon2,day1,day2;
		int temp1,temp2,temp3,temp4;
		year1=d1.getYear()+1900;
		year2=d2.getYear()+1900;
		mon1=d1.getMonth()+1;
		mon2=d2.getMonth()+1;
		day1=d1.getDate();
		day2=d2.getDate();
		temp1=mon1;
		temp2=mon2;
		temp3=year1;
		temp4=year2;
		if (year1<year2)
		{
			total=getNumOfMonth(temp1,year1)-day1;
		}
		else if (year1>year2)
		{
			total=getNumOfMonth(temp2,year2)-day2;
		}
		while (temp3!=temp4)
		{
			if (temp3<temp4)
			{
				//total+=getNumOfMonth(temp1,year1)-day1;
				temp1++;
				while(temp1<13)
				{
					total+=getNumOfMonth(temp1,temp3);
					temp1++;
				}
				temp3++;
			}
			else
			{
				//total=getNumOfMonth(temp2,year2)-day2;
				temp2++;
				while(temp2<13)
				{
					total+=getNumOfMonth(temp2,temp4);
					temp2++;
				}
				temp4++;
			}
		}
			if (year1<year2)
			{
				total+=day2;
				mon2--;
				while (mon2>0)
				{
					total+=getNumOfMonth(mon2,year2);
					mon2--;
				}
			}
			else if (year1>year2)
			{
				total+=day1;
				mon1--;
				while (mon1>0)
				{
					total+=getNumOfMonth(mon1,year1);
					mon1--;
				}
			}
			else if (year1==year2)
			{
				if (mon1<mon2)
				{
					total+=getNumOfMonth(mon1,year1)-day1;
					mon1++;
					while (mon1!=mon2)
					{
						total+=getNumOfMonth(mon1,year1);
						mon1++;
					}
					total+=day2;
				}
				else if (mon1>mon2)
				{
					total+=getNumOfMonth(mon2,year1)-day2;
					mon2++;
					while(mon1!=mon2)
					{
						total+=getNumOfMonth(mon2,year1);
						mon2++;
					}
					total+=day1;
				}
				else
				{
					total+=day2-day1;
				}
			}
		return total;
	}
	
//计算两个时间区间有多少周(如2004-01-21到2004-05-12)
	public static int subWeekNum(String ymd1,String ymd2)
	{
		Date d1=getDate(ymd1);
		Date d2=getDate(ymd2);
		int year1,year2,mon1,mon2,day1,day2;
		int total=0;
		year1=d1.getYear();
		year2=d2.getYear();
		mon1=d1.getMonth();
		mon2=d2.getMonth();
		day1=d1.getDate();
		day2=d2.getDate();
		if (year1<year2)
		{
			total=getTotal(ymd1,ymd2);
		}
		else if (year1>year2)
		{
			total=getTotal(ymd2,ymd1);
		}
		else
		{
			if (mon1<mon2)
			{
				total=getTotal(ymd1,ymd2);
			}
			else if (mon1>mon2)
			{
				total=getTotal(ymd2,ymd1);
			}
			else if (mon1==mon2)
			{
				if (day1<day2)
				{
					total=getTotal(ymd1,ymd2);
				}
				else if (day1>day2)
				{
					total=getTotal(ymd2,ymd1);
				}
				else
				{
					total=0;
				}
			}
		}
		return total;
	}
	
	public static void main(String args[])
	{
		DateOp ds=new DateOp();
		
//string类型(如2004-04-12)转换成datetime类型:public Date getDate(String ymd)
		System.out.println("string类型(如2004-04-12)转换成datetime类型:");		
		System.out.println(ds.getDate("2004-04-12").toString());
		System.out.println();
		
//datetime类型转换成String:public String getDate(Date d)
		System.out.println("datetime类型转换成String:");
		System.out.println(ds.getDate(ds.getDate("2004-04-12")));
		System.out.println();
		
//判断某天是当月的第几周:public int getWeek(String ymd)	
		System.out.println("判断某天是当月的第几周:");
		System.out.println("2004-04-12 是第"+ds.getWeek("2004-04-12")+"周");
		System.out.println();
		
//判断某天是当月的星期几:public int getDay(String ymd)	
		System.out.println("判断某天是当月的星期几(星期日用0表示):");	
		System.out.println("2004-04-12 是星期"+ds.getDay("2004-04-12"));
		System.out.println();
		
//日期的加(如某天加若干天是哪天):public  Date dateAdd(String ymd,int num)
		System.out.println("日期的加(如某天加若干天是哪天):");	
		System.out.println("2004-04-12 加30天是"+ds.dateAdd("2004-04-12",30).toString());
		System.out.println();

//日期的加(如某天加若干天是哪天):public  Date dateAdd(Date d,int num)
		System.out.println("日期的加(如某天加若干天是哪天):");			
		System.out.println("2004-04-12 加30天是"+ds.dateAdd(ds.getDate("2004-04-12"),30).toString());
		System.out.println();
		
//日期的减(如某天减若干天是哪天):public  Date dateDel(String ymd,int num)
		System.out.println("日期的减(如某天减若干天是哪天):");
		System.out.println("2004-04-12 减30天是"+ds.dateDel("2004-04-12",30).toString());	
		System.out.println();
		
//计算两个时间区间有多少天(如2004-01-21到2004-05-12):public int subDayNum(String ymd1,String ymd2)							
		System.out.println("计算两个时间区间有多少天(如2004-01-21到2004-05-12):");
		System.out.println("2004-01-21到2004-05-12有"+ds.subDayNum("2004-01-21","2004-05-12")+"天");
		System.out.println();
		
//计算两个时间区间有多少周(如2004-01-21到2004-05-12):public int subWeekNum(String ymd1,String ymd2)
		System.out.println("计算两个时间区间有多少周(如2004-01-21到2004-05-12):");	
		System.out.println("2004-01-21到2004-05-12有"+ds.subWeekNum("2004-01-21","2004-05-12")+"周");	
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -