关于时间判断的条件 现在有个疑问,我在一个页面上显示了所有的数据,时间到旬,现在想对数据做删除的操作,但只能对当前日期的本旬和下旬做删除,本旬以前的数据只能查询不能删除,请大家帮帮忙,我该怎么写这段代码啊? 例如:现在是2009年10月27日是下旬,我能对这条数据做删除,也能对2009年11月上旬的数据做删除,但不能对10月中旬的数据做删除。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Calendar1.after(Calendar2);判断时间1是否在时间2之后Calendar1.before(Calendar2);判断时间1是否在时间2之前 你看一下下面这个可以么?import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class Test { public static void main(String[] args) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse("2009-10-27 00:00:00"); TenDayScope tenDay = TenDayScope.getInstance(); System.out.println(tenDay.contains(date)); }}class TenDayScope { public final static int FIRST_TEN_DAY = 0; public final static int SECOND_TEN_DAY = 1; public final static int THIRD_TEN_DAY = 2; private Calendar start; private Calendar end; private TenDayScope() { init(); } public Calendar getStart() { return (Calendar)start.clone(); } public Calendar getEnd() { return (Calendar)end.clone(); } public static TenDayScope getInstance() { return new TenDayScope(); } /** * 判断 Date 是否在本旬以及下旬之间 * @param date * @return * 2009-10-27 下午01:42:07 */ public boolean contains(Date date) { if(date == null) { return false; } return contains(date.getTime()); } /** * 判断 Calendar 是否在本旬以及下旬之间 * @param date * @return * 2009-10-27 下午01:42:07 */ public boolean contains(Calendar calendar) { if(calendar == null) { return false; } return contains(calendar.getTimeInMillis()); } /** * 判断 Unix 纪元毫秒数是否在本旬以及下旬之间 * @param date * @return * 2009-10-27 下午01:42:07 */ public boolean contains(long millis) { return (millis >= start.getTimeInMillis()) && (millis < end.getTimeInMillis()); } private void init() { { start = Calendar.getInstance(); int t = getTenDay(start.get(Calendar.DATE)); start.set(Calendar.DATE, getStartTenDay(t)); clearHms(start); } { end = Calendar.getInstance(); int t = getTenDay(end.get(Calendar.DATE)); int endDay = getEndTenNextDay(t); if(t > FIRST_TEN_DAY) { end.add(Calendar.MONTH, 1); } end.set(Calendar.DATE, getEndTenNextDay(endDay)); clearHms(end); } } /** * 清空 Calendar 日以下的字段 * @param c * 2009-10-27 下午01:41:39 */ private void clearHms(Calendar c) { c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); } /** * 根据当前旬次,获得该旬的第一天日 * * @param currentTenDay * @return * 2009-10-27 下午01:40:56 */ private int getStartTenDay(int currentTenDay) { return currentTenDay * 10 + 1; } /** * 根据当前旬次,获得下旬最后一天的后一天 * @param currentTenDay * @return * 2009-10-27 下午01:41:18 */ private int getEndTenNextDay(int currentTenDay) { return (currentTenDay + 2) % 3 * 10 + 1; } /** * 根据日期获得旬次 * @param day * 2009-10-27 下午01:40:28 */ private int getTenDay(int day) { int t = (day - 1) / 10; if(t > THIRD_TEN_DAY) { t = THIRD_TEN_DAY; } return t; } public String toString() { return String.format("start: %tF %<tT, end: %tF %<tT", start, end); }} 虚心请教一个问题,不知道这个程序错在哪里。 线程会不会自动销毁? 如何学会java 希望有高人前辈领个项目什么的,给我们这些菜鸟多点锻炼机会! 根据"数据库中的表"生产"一颗树"! 100分求was5.0数据源与Oracle9i不能手动提交事务问题! Java内部类问题 一个书上的代码 请高手看看什么地方有问题? 可乐吧的游戏是用java写的么?有没有关于这方面的资料? 最简单的程序(打印hello,word的程序)不能运行,请指教!!! j2se 中 如何完成 屏幕锁定 功能? 请高手看下这个se中关于流的一个小程序的疑问????
Calendar1.before(Calendar2);判断时间1是否在时间2之前
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;public class Test { public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2009-10-27 00:00:00");
TenDayScope tenDay = TenDayScope.getInstance();
System.out.println(tenDay.contains(date));
}
}class TenDayScope {
public final static int FIRST_TEN_DAY = 0;
public final static int SECOND_TEN_DAY = 1;
public final static int THIRD_TEN_DAY = 2;
private Calendar start;
private Calendar end;
private TenDayScope() {
init();
}
public Calendar getStart() {
return (Calendar)start.clone();
}
public Calendar getEnd() {
return (Calendar)end.clone();
}
public static TenDayScope getInstance() {
return new TenDayScope();
}
/**
* 判断 Date 是否在本旬以及下旬之间
* @param date
* @return
* 2009-10-27 下午01:42:07
*/
public boolean contains(Date date) {
if(date == null) {
return false;
}
return contains(date.getTime());
}
/**
* 判断 Calendar 是否在本旬以及下旬之间
* @param date
* @return
* 2009-10-27 下午01:42:07
*/
public boolean contains(Calendar calendar) {
if(calendar == null) {
return false;
}
return contains(calendar.getTimeInMillis());
}
/**
* 判断 Unix 纪元毫秒数是否在本旬以及下旬之间
* @param date
* @return
* 2009-10-27 下午01:42:07
*/
public boolean contains(long millis) {
return (millis >= start.getTimeInMillis()) && (millis < end.getTimeInMillis());
}
private void init() {
{
start = Calendar.getInstance();
int t = getTenDay(start.get(Calendar.DATE));
start.set(Calendar.DATE, getStartTenDay(t));
clearHms(start);
}
{
end = Calendar.getInstance();
int t = getTenDay(end.get(Calendar.DATE));
int endDay = getEndTenNextDay(t);
if(t > FIRST_TEN_DAY) {
end.add(Calendar.MONTH, 1);
}
end.set(Calendar.DATE, getEndTenNextDay(endDay));
clearHms(end);
}
}
/**
* 清空 Calendar 日以下的字段
* @param c
* 2009-10-27 下午01:41:39
*/
private void clearHms(Calendar c) {
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
}
/**
* 根据当前旬次,获得该旬的第一天日
*
* @param currentTenDay
* @return
* 2009-10-27 下午01:40:56
*/
private int getStartTenDay(int currentTenDay) {
return currentTenDay * 10 + 1;
}
/**
* 根据当前旬次,获得下旬最后一天的后一天
* @param currentTenDay
* @return
* 2009-10-27 下午01:41:18
*/
private int getEndTenNextDay(int currentTenDay) {
return (currentTenDay + 2) % 3 * 10 + 1;
}
/**
* 根据日期获得旬次
* @param day
* 2009-10-27 下午01:40:28
*/
private int getTenDay(int day) {
int t = (day - 1) / 10;
if(t > THIRD_TEN_DAY) {
t = THIRD_TEN_DAY;
}
return t;
}
public String toString() {
return String.format("start: %tF %<tT, end: %tF %<tT", start, end);
}
}