日期问题?高分征解!! 看Calender这个类,我做过时间太久了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Calender类看过了,它提供的方法太零碎,实现起来逻辑上太复杂了。哪位大侠有现成的? Calendar c; ... for (...){ c.add(7,c.DATE); ... } 这么惨!!HELP、HELP…… 想要现成的东西肯定是没有的。本来Calender就是一个抽象的接口,你可以在WEEK_OF_MONTH filed,get(),set()方法基础上自己编算法写一个类实现这个接口。麻烦就麻烦一点,只要结构好就行了 有一个关键方法提示一下GregorianCalendar cal = new GregorianCalendar();int week = cal.get(java.util.Calendar.DAY_OF_WEEK) - 1; 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<=tmpweeks;i++){ strOut="第"+new Integer((int)i).toString()+"周("+myClass1.printdate(new Date(t1))+"-----"; while(((new Date(t1)).getDay()!=6) && (t1!=t2)){ t1+=3600*24*1000; } strOut+=myClass1.printdate(new Date(t1))+")"; System.out.println(strOut); t1+=3600*24*1000; } } public String printdate(Date date){ String m=new Integer(date.getMonth()+1).toString(); String d=new Integer(date.getDate()).toString(); return m+"月"+d+"日"; }} 给你一个类吧。返回一个哈希表,key 是“第1周”value对应是 xxx年XX月XX日- XXXX年XX月XX日你只要得到这个hashtable,至于如何显示,就在于你自己了,对吧。/*** 显示周计划表的类* 作者:sharetop([email protected])* 日期: 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; } } 再给你一个使用方法例子:/* * example of STDateSeparator */import java.util.*;import java.text.*;import com.sharetop.util.STDateSeparator;public class MyDate{ public MyDate() { } public void show() throws ParseException { STDateSeparator separator = new STDateSeparator(); separator.setStartDate(2001,8,16); // 开始日期 separator.setEndDate(2001,9,4); //结束日期 int[] r = new int[3]; r = separator.getWeekCount(); for(int i=0;i<3;i++) System.out.println(r[i]); System.out.println(separator.getWeeks().toString()); } public static void main(String args[]) { System.out.println("Starting MyDate..."); MyDate my = new MyDate(); try{ my.show(); }catch(Exception ex){ System.out.println(ex.getMessage()); } }} 多谢sharetop(天生很笨)老兄,虽然还有一点小问题。 多线程问题 关于鼠标绘图的问题,请指教!~~~ 急啊~~JSP解决不了 请问如何在Eclipse中生成javadoc帮助文档? 什么是api,做什么用?哪里可以下载? resin下JNI调用的问题? 有关tapestry5框架对中文的支持问题 用Swing做了个图形界面,在jdk1.4.x下操作速度很慢,请这方面有经验的兄弟进来发表高见! 给斑竹hexiaofeng (java程序运行报错,如下图)请问该如何解决? 向高手请教Resin服务器的配置问题… 最新消息:微软在 Windows XP 和 ie6 中将不再支持java,java还有前途吗?!!
哪位大侠有现成的?
...
for (...){
c.add(7,c.DATE);
...
}
HELP、HELP……
GregorianCalendar cal = new GregorianCalendar();
int week = cal.get(java.util.Calendar.DAY_OF_WEEK) - 1;
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<=tmpweeks;i++){
strOut="第"+new Integer((int)i).toString()+"周("+myClass1.printdate(new Date(t1))+"-----";
while(((new Date(t1)).getDay()!=6) && (t1!=t2)){
t1+=3600*24*1000;
}
strOut+=myClass1.printdate(new Date(t1))+")";
System.out.println(strOut);
t1+=3600*24*1000;
}
}
public String printdate(Date date){
String m=new Integer(date.getMonth()+1).toString();
String d=new Integer(date.getDate()).toString();
return m+"月"+d+"日";
}
}
你只要得到这个hashtable,至于如何显示,就在于你自己了,对吧。/**
* 显示周计划表的类
* 作者:sharetop([email protected])
* 日期: 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;
}
}
再给你一个使用方法例子:/*
* example of STDateSeparator
*/import java.util.*;
import java.text.*;import com.sharetop.util.STDateSeparator;public class MyDate
{
public MyDate() {
}
public void show() throws ParseException { STDateSeparator separator = new STDateSeparator();
separator.setStartDate(2001,8,16); // 开始日期
separator.setEndDate(2001,9,4); //结束日期
int[] r = new int[3];
r = separator.getWeekCount();
for(int i=0;i<3;i++)
System.out.println(r[i]);
System.out.println(separator.getWeeks().toString());
} public static void main(String args[])
{
System.out.println("Starting MyDate...");
MyDate my = new MyDate();
try{
my.show();
}catch(Exception ex){
System.out.println(ex.getMessage());
} }
}