根据当前日期,得到下周第一天、下月第一天,下三个月后的第一天。Calendar类里有现成的实现方法么? 而且,一周的第一天是可以任意指定的。即,如果指定了一周的第一天是周五,那么如果今天是周四的话,下周的第一天指的就是第二天。对JDK 1.4的Calendar类很不熟悉,请教有解决过类似问题的同志,能给个指点么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查一下java api啊........例如:Date date = new Date();//your date GregorianCalendar cal = new GregorianCalendar();cal.setTime(date);cal.add(GregorianCalendar.DATE,-3);//前推3天的日期System.out.println(cal.getTime());cal.add(GregorianCalendar.DATE,-7);//上一周的日期 addDay(7)addMonth()addMonth().addMonth().addMonth() 可以作到的Calendar类里面的add方法 比较麻烦的就是对星期的推算。比如今天是周四,那么一般来说下一周的第一天应该是下周一。但现在要求每周的第一天是可以指定的,那么如果指定了每周的第一天是周六的话,下一周的第一天就是本周周六了。我查了API,本来以为Calender的setFirstDayOfWeek()和getFirstDayOfWeek()可以解决这个问题。但我发现即使用setFirstDayOfWeek()方法设置了一周的第一天,用calendar.get(Calendar.DAY_OF_WEEK)取得的数字仍然没有变化;例子如下: public void getPaymentDate(String firstDayOfWeek){ Calendar calendar = new GregorianCalendar(); String firstDayOfThisWeek = Integer.toString(calendar.getFirstDayOfWeek()); if (logger.isDebugEnabled()) { logger.debug("---------------initialization"); } if (logger.isDebugEnabled()) { logger.debug("getPaymentDate() - DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK)); } calendar.setFirstDayOfWeek(Integer.parseInt(firstDayOfWeek)); if (logger.isDebugEnabled()) { logger.debug("---------------after set first day of week parameter"); } if (logger.isDebugEnabled()) { logger.debug("getPaymentDate() - DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK)); } }运行结果如下:2005-07-14 15:54:59,881 org.zmaze.util.CalendarTest(CalendarTest.java:24)DEBUG: ---------------initialization2005-07-14 15:54:59,921 org.zmaze.util.CalendarTest(CalendarTest.java:28)DEBUG: getPaymentDate() - DAY_OF_WEEK: 52005-07-14 15:54:59,931 org.zmaze.util.CalendarTest(CalendarTest.java:34)DEBUG: ---------------after set first day of week parameter2005-07-14 15:54:59,931 org.zmaze.util.CalendarTest(CalendarTest.java:38)DEBUG: getPaymentDate() - DAY_OF_WEEK: 5现在大家知道我的意思了吧。有没有好的思路或者解决方法呢?请不吝赐教。最好不要用getTime()方法具体的去计算毫秒数,那样类似的方法我已经用javascript在客户端实现了。现在就是想了解一下用java的API有没有比较成型的解决方案。多谢各位。 我现在用写了个这样的方法实现。不知道还有没有更好的方式:public void getPaymentDate(String strFirstDayOfWeek) { Calendar calendar = new GregorianCalendar(); Calendar calNextWeek = (Calendar)calendar.clone(); Calendar calNext2Week = (Calendar)calendar.clone(); Date dateNextWeek = new Date(); Date dateNext2Week = new Date(); String strNextWeek = ""; String strNext2Week = ""; SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd"); int firstDayOfWeek = Integer.parseInt(strFirstDayOfWeek); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; dayOfWeek = (dayOfWeek == 0) ? 7 : dayOfWeek; int days2NextWeek = (6 - (dayOfWeek - firstDayOfWeek)) % 7; int days2Next2Week = days2NextWeek + 7; calNextWeek.add(Calendar.DATE,days2NextWeek); calNext2Week.add(Calendar.DATE,days2Next2Week); dateNextWeek = calNextWeek.getTime(); dateNext2Week = calNext2Week.getTime(); if (logger.isDebugEnabled()) { logger.debug("getPaymentDate(String) - : firstDayOfWeek=" + firstDayOfWeek + ", dayOfWeek=" + dayOfWeek + ", days2NextWeek=" + days2NextWeek + ", days2Next2Week=" + days2Next2Week); } strNextWeek = sdf.format(dateNextWeek); strNext2Week = sdf.format(dateNext2Week); } Calendar cal=Calendar.getInstance();int dayOfWeek=cal.get(cal.DAY_OF_WEEK)-cal.getFirstDayOfWeek();//当天是星期几 排序问题 java电子商务网站安装求助!!!! 怎样取得当前的日期及时间并将其转换为如2005-12-12-21-30-22的字符串 关于LOG4J问题 在线急等!求救json操作 大家用过Orteus没有?哪里有下的? 急!!!!一个画图程序 在JAVA里,怎样才能读入int型的数据?这些数在外部文件中,谢谢!! 为什么java.util.Date().getMonth()取出的月份值总是比实际的月份小一个月? jtable菜鸟求助 如何实现电梯升降模型!!! [高手来看]请问如何监听语音modem而获得来电显示号码?[高分求助]
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(GregorianCalendar.DATE,-3);//前推3天的日期
System.out.println(cal.getTime());cal.add(GregorianCalendar.DATE,-7);//上一周的日期
addMonth()
addMonth().addMonth().addMonth()
Calendar类里面的add方法
比如今天是周四,那么一般来说下一周的第一天应该是下周一。
但现在要求每周的第一天是可以指定的,那么如果指定了每周的第一天是周六的话,下一周的第一天就是本周周六了。
我查了API,本来以为Calender的setFirstDayOfWeek()和getFirstDayOfWeek()可以解决这个问题。但我发现即使用setFirstDayOfWeek()方法设置了一周的第一天,用calendar.get(Calendar.DAY_OF_WEEK)取得的数字仍然没有变化;例子如下:
public void getPaymentDate(String firstDayOfWeek){
Calendar calendar = new GregorianCalendar();
String firstDayOfThisWeek = Integer.toString(calendar.getFirstDayOfWeek());
if (logger.isDebugEnabled()) {
logger.debug("---------------initialization");
} if (logger.isDebugEnabled()) {
logger.debug("getPaymentDate() - DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
} calendar.setFirstDayOfWeek(Integer.parseInt(firstDayOfWeek));
if (logger.isDebugEnabled()) {
logger.debug("---------------after set first day of week parameter");
}
if (logger.isDebugEnabled()) {
logger.debug("getPaymentDate() - DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
}
}
运行结果如下:
2005-07-14 15:54:59,881 org.zmaze.util.CalendarTest(CalendarTest.java:24)
DEBUG: ---------------initialization
2005-07-14 15:54:59,921 org.zmaze.util.CalendarTest(CalendarTest.java:28)
DEBUG: getPaymentDate() - DAY_OF_WEEK: 5
2005-07-14 15:54:59,931 org.zmaze.util.CalendarTest(CalendarTest.java:34)
DEBUG: ---------------after set first day of week parameter
2005-07-14 15:54:59,931 org.zmaze.util.CalendarTest(CalendarTest.java:38)
DEBUG: getPaymentDate() - DAY_OF_WEEK: 5
现在大家知道我的意思了吧。有没有好的思路或者解决方法呢?请不吝赐教。
最好不要用getTime()方法具体的去计算毫秒数,那样类似的方法我已经用javascript在客户端实现了。现在就是想了解一下用java的API有没有比较成型的解决方案。
多谢各位。
Calendar calendar = new GregorianCalendar();
Calendar calNextWeek = (Calendar)calendar.clone();
Calendar calNext2Week = (Calendar)calendar.clone();
Date dateNextWeek = new Date();
Date dateNext2Week = new Date();
String strNextWeek = "";
String strNext2Week = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy'-'MM'-'dd");
int firstDayOfWeek = Integer.parseInt(strFirstDayOfWeek);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
dayOfWeek = (dayOfWeek == 0) ? 7 : dayOfWeek;
int days2NextWeek = (6 - (dayOfWeek - firstDayOfWeek)) % 7;
int days2Next2Week = days2NextWeek + 7;
calNextWeek.add(Calendar.DATE,days2NextWeek);
calNext2Week.add(Calendar.DATE,days2Next2Week);
dateNextWeek = calNextWeek.getTime();
dateNext2Week = calNext2Week.getTime(); if (logger.isDebugEnabled()) {
logger.debug("getPaymentDate(String) - : firstDayOfWeek="
+ firstDayOfWeek + ", dayOfWeek=" + dayOfWeek
+ ", days2NextWeek=" + days2NextWeek + ", days2Next2Week="
+ days2Next2Week);
} strNextWeek = sdf.format(dateNextWeek);
strNext2Week = sdf.format(dateNext2Week);
}
int dayOfWeek=cal.get(cal.DAY_OF_WEEK)-cal.getFirstDayOfWeek();//当天是星期几