到期提示功能的实现问题,解决立即给分,从没有食言过!

recentday 2003-12-25 09:32:18
我现在给某个人一个任务通知,此任务的开始时间在jsp中假如是:2003年1月1日10时10分,任务要求完成时间为2004年2月1日3时12分(以上是在jsp网页中通过下拉框实现的),我们怎么在任务的结束前5天警告该人员时间快到了呢,怎么在数据库中存放时间数据呢?
...全文
67 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
recentday 2003-12-27
  • 打赏
  • 举报
回复
太谢谢fff123了,就算自己没有做出来也要结贴!
fft123 2003-12-26
  • 打赏
  • 举报
回复
如果这种格式:'1/15/2002' 存不进去
想省事就自己转换一下
String s = "1/15/2002";
String[] t = s.split("/");
String result = t[2]+"-"+t[0]+"-"+t[1];
result就是你要的2002-1-15格式的字符串

注:split方法在jdk1.4里才可以用
如果你的是1.3的,自己查jdk的api,查StringTokenizer的用法
fft123 2003-12-26
  • 打赏
  • 举报
回复
不知道
我现在机子上的sqlserver坏了,没法试
你自己试验一下不就是了
insert into table values(......, '1/15/2002' ,
'2/15/2002' ,....)
去查询分析器里执行一下试试去
只要能存进数据库,后面的就都是一样的
与当前日期比较:假如说已经得到一个String表示的,如01/15/2002
(注:不足2位的最好手动补上,否则不太好判断)
需要与今天比较
import java.text.*;
import java.util.*;
String ss = "01/15/2002";
SimpleDateFormat sf = new SimpleDateFormat("MM/dd/yyyy");
Date dd = sf.parse(ss);
Date now = new Date();
//比较:
//第一种方法:只比较日期的前后
System.out.println(dd.after(now));
//第二种方法:可以比较相差天数
long l = now.getTime()-dd.getTime();//l是相差的毫秒数;l大于0,前者大
//相差天数:
System.out.println(l/(1000*60*60));



2001-12-10表示0:00:00
没有的部分全是按默认的0

recentday 2003-12-26
  • 打赏
  • 举报
回复
你可以用我的这个插件试验一下!
recentday 2003-12-26
  • 打赏
  • 举报
回复
那是个插件,和js功能差不多,我想问问你,象1/15/2002这样的日期可以作为日期型存进数据库吗?如果可以,那么1/15/2002怎么与当前日期比较呢?
另:2001-12-10 表示的是这一天的几点几分?
fft123 2003-12-26
  • 打赏
  • 举报
回复
你从哪抄的js的代码?我看你贴的不像是js的脚本啊

把问题描述清楚一点
第一个页面的日期格式是2003-12-10,你接收后变成了1/15/2002了??
如果是这样,那是你的代码某个地方或者javascript转换出毛病了

你可以先把主要功能实现
至于那个2月不能输入31的是小问题,等你主要功能实现了后再去想这个问题
recentday 2003-12-26
  • 打赏
  • 举报
回复
但是在前个页面中却是日期如2003-12-10的形式,怎么会出现1/15/2002 7:22:33 PM呢?
recentday 2003-12-26
  • 打赏
  • 举报
回复
你们好,昨天晚上我导师又说时间精确到天就可以了,由于毕业论文很急,我也不想再向深处做了,但是我还是没有做出来.
我又找了一个script的日期代码,这样防止出现2月份输入31号的错误,代码如下:
<td>
<object classid="clsid:20DD1B9E-87C4-11D1-8BE3-0000F8754DA1" name="startdate" id="startdate" height="25" width="150">
<param name="_ExtentX" value="3969">
<param name="_ExtentY" value="661">
<param name="_Version" value="393216">
<param name="MousePointer" value="0">
<param name="Enabled" value="1">
<param name="OLEDropMode" value="0">
<param name="CalendarBackColor" value="-2147483643">
<param name="CalendarForeColor" value="-2147483630">
<param name="CalendarTitleBackColor" value="-2147483633">
<param name="CalendarTitleForeColor" value="-2147483630">
<param name="CalendarTrailingForeColor" value="-2147483631">
<param name="CheckBox" value="0">
<param name="CustomFormat" value>
<param name="DateIsNull" value="0">
<param name="Format" value="662831105">
<param name="UpDown" value="0">
<param name="CurrentDate" value="37271.8073263889">
<param name="MaxDate" value="2958465">
<param name="MinDate" value="-109205">
</object></td>

但是我从接收页面接收后,打印出来的却是格式如:1/15/2002 7:22:33 PM,我想知道这样怎么存近数据库(sqlserver呀)?另外,如果日期格式为"2003-12-12",这样的话如果把日期除以(24 * 60 * 60 * 1000)可以吗,"2003-12-12"默认的小时,分,秒是什么呢?
接收代码如下:
String startdate=new String(request.getParameter("startdate").getBytes("8859_1"),"gb2312");
out.print(startdate);
麻烦你们了!
layueer 2003-12-25
  • 打赏
  • 举报
回复
对,数据库中要存放开始时间和结束时间。
select 结束时间-当前时间 as time
if time>5 {警告!}
fft123 2003-12-25
  • 打赏
  • 举报
回复
写:
insert into table values(......, '2002-10-10 10:10:10' ,
'2003-10-10 10:10:10' ,....)

读的sql:
select * from table where enddate < judgedate and user=登录人员

enddate是你表里的结束时间字段
judgedate的实现:
可以用java.util.Date curdate = new java.util.Date();
java.util.Calendar c = java.util.Calnedar.getInstance();
c.setTime(curdate);
c.add(DATE,-5);
judgedate = c.getTime();

上面写的是个思路
没调试
楼主自己试试吧
recentday 2003-12-25
  • 打赏
  • 举报
回复
大家注意我这里还有小时和分呢,怎么存进数据库并读出,格式怎么写
fft123 2003-12-25
  • 打赏
  • 举报
回复
思路是这样:
首先数据库里要有开始时间和结束时间这两个字段
然后用户输入的开始时间和结束时间分别存进这2个字段
假设你是任务结束时间前5天提示
那么每当工作人员登录时
选出表中所有的结束时间与今天相差小于5天的记录(与该工作人员相关的)
然后根据记录id,把这些任务显示给工作人员(或者直接用javascript的alert来提示)

至于保存时间,最简单方法就是,(假定数据库是sqlserver)
两个日期定义成datetime类型
插入的sql语句中,把2001-10-20两边用单引号括起来,就可以把字符串表示的日期当做日期类型插入sqlserver数据库
老土豆T 2003-12-25
  • 打赏
  • 举报
回复
Sorry ,
应该为
int i = (int)(b.getTime()-a.getTime())/(24*60*60*1000);
老土豆T 2003-12-25
  • 打赏
  • 举报
回复
用数据库放日期型
java.util.Date a = new java.util.Date(); //当前时间
java.util.Date b = rs.getDate("完成时间");

int i =(int)(b.getTime() - b.getTime())/(24 * 60 * 60 * 1000); /获得相差的天数

if (i<=5){
警告时间快到了。
}

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧