当前位置: 技术问答>java相关
日期问题?高分征解!!
来源: 互联网 发布时间:2015-01-24
本文导语: 我要做一个周计划表,打算在输入两个日期后,得到它们之间的周数和具体日期。 例如:输入2001-9-3和2002-2-20 希望得到输出:第1周(9月3日——9月7日) 第2周(9月10日——9月14日) ...
我要做一个周计划表,打算在输入两个日期后,得到它们之间的周数和具体日期。
例如:输入2001-9-3和2002-2-20
希望得到输出:第1周(9月3日——9月7日)
第2周(9月10日——9月14日)
第3周(9月17日——9月21日)
……
请各位赐教。
例如:输入2001-9-3和2002-2-20
希望得到输出:第1周(9月3日——9月7日)
第2周(9月10日——9月14日)
第3周(9月17日——9月21日)
……
请各位赐教。
|
给你一个类吧。
返回一个哈希表,key 是“第1周”value对应是 xxx年XX月XX日- XXXX年XX月XX日
你只要得到这个hashtable,至于如何显示,就在于你自己了,对吧。
/**
* 显示周计划表的类
* 作者:sharetop(ycshowtop@21cn.com)
* 日期: 2001-8-16
*/
import java.util.*;
import java.text.*;
public class STDateSeparator
{
GregorianCalendar startDate = null;
GregorianCalendar endDate = null;
public STDateSeparator()
{
}
public void setStartDate(int year,int month,int day)
{
startDate = new GregorianCalendar(year,month-1,day);
}
public void setEndDate(int year,int month,int day)
{
endDate = new GregorianCalendar(year,month-1,day);
}
/*取出有几个周
res[0] 前余天数
res[1] 周数
res[2] 后余天数
*/
public int[] getWeekCount()
{
int count = 0;
int res[] = new int[3];
GregorianCalendar workDate = (GregorianCalendar)startDate.clone();
res[2]= endDate.get(Calendar.DAY_OF_WEEK);
res[0] = 7-startDate.get(Calendar.DAY_OF_WEEK);
workDate.add(Calendar.DATE,res[0]);
while(workDate.before(endDate)){
workDate.add(Calendar.DATE,7);
count ++;
}
res[1]=count-1;
return res;
}
/**
取出一个周计划表
*/
public Hashtable getWeeks()
{
int count = 0;
Hashtable res = new Hashtable();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
GregorianCalendar workDate = (GregorianCalendar)startDate.clone();
GregorianCalendar showDate;
int first = startDate.get(Calendar.DAY_OF_WEEK);
int last = endDate.get(Calendar.DAY_OF_WEEK);
workDate.add(Calendar.DATE,0-first);
while(workDate.before(endDate)){
showDate = (GregorianCalendar)workDate.clone();
showDate.add(Calendar.DATE,1);
String s = sdf.format(showDate.getTime());
workDate.add(Calendar.DATE,7);
count ++;
String e = sdf.format(workDate.getTime());
res.put("第"+count+"周",s+"-"+e);
}
return res;
}
public Hashtable getMonths()
{
//同样方法实现
return null;
}
}
|
import java.util.Date;
import java.text.DateFormat ;
public class MyClass1 {
Date startdate,enddate;
public static void main(String[] args) {
MyClass1 myClass1 = new MyClass1();
String strOut="";
long t1=Date.UTC (new Integer(args[0].substring(0,4)).intValue()-1900,new Integer(args[0].substring(5,7)).intValue()-1,new Integer(args[0].substring(8,10)).intValue(),0,0,0);
long t2=Date.UTC (new Integer(args[1].substring(0,4)).intValue()-1900,new Integer(args[1].substring(5,7)).intValue()-1,new Integer(args[1].substring(8,10)).intValue(),0,0,0);
long tmpweeks=(t2-t1)/(3600*24*7*1000)+1;
for(long i=1;i
import java.text.DateFormat ;
public class MyClass1 {
Date startdate,enddate;
public static void main(String[] args) {
MyClass1 myClass1 = new MyClass1();
String strOut="";
long t1=Date.UTC (new Integer(args[0].substring(0,4)).intValue()-1900,new Integer(args[0].substring(5,7)).intValue()-1,new Integer(args[0].substring(8,10)).intValue(),0,0,0);
long t2=Date.UTC (new Integer(args[1].substring(0,4)).intValue()-1900,new Integer(args[1].substring(5,7)).intValue()-1,new Integer(args[1].substring(8,10)).intValue(),0,0,0);
long tmpweeks=(t2-t1)/(3600*24*7*1000)+1;
for(long i=1;i