比如:客户从页面输入发布有效天数=21 存入数据库我从数据库读出有效天数=21,如何利用系统当前时间来换算21,从而取得剩余天数???
解决方案 »
- 怎么写JAVA正则表达式
- Java如何使用多线程读取40M的文件?最好有实例
- 求解!!————-用prepareStatement对ACCESS进行模糊查找。问题!!!
- 可以帮忙解释下这段代码吗??老师要提问的!!
- 请问一个简单的Eclipse的使用
- 使用jdom包时写xml文件的格式问题
- 紧急求助:FtpClient中执行命令的问题,在线等待,解决之后马上给分!!!
- 关于APLLET的几个小问题。
- 怎么安装java需要专用的sqlserver驱动,那里有下载
- 初学者的问题,在子目录中不好运行
- 几道常见的java测试题,有时间的可以来做做,试试自己水平?
- 为什么运行是这个结果,而不是这个结果?
java 中显示当前日期的方法是通过java.util.Date来实现。基本代码如下:import java.util.Date; Date dateNow=new Date();这个时候可以通过java.text.SimpleDateFormat 进行格式化显示。 SimpleDateFormat dateFormat=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); String dateNowStr=dateFormat.format(dateNow); 打印 dateNowStr就可以了
传入客户输入的时间 和他设置的日期size存入数据库显示时只要判断当前日期和存入的日期就行
public String addDay(String day,int size) {
SimpleDateFormat sfObj = new SimpleDateFormat("yyyy-MM-dd");
GregorianCalendar cal = new GregorianCalendar();
String newday="";
try {
cal.setTime(sfObj.parse(day));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.add(GregorianCalendar.DATE, size);// 在日期上加7天
newday=sfObj.format(cal.getTime());
return newday;
}
如果这样的话可以分另求出输入的日期的天数,和当前日期的天数,然后求差与21进行比较;
求给定日期返回它的天数可以用这个方法。它是以1年,1月,1日作为起点:
public static int getDays(Date d)
{
Calendar c = Calendar.getInstance();
c.setTime(d);
int dDay = c.get(Calendar.DATE);
int dYear = c.get(Calendar.YEAR);
int dMonth = c.get(Calendar.MONTH);
int days=0;
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
for(int i=1;i<dMonth;i++){
days+=months[i];
}
days+=dDay;
return days;
}
SimpleDateFormat dateFormat=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); String dateNowStr=dateFormat.format(dateNow);
public static int getDays(Date d)
{
Calendar c = Calendar.getInstance();
c.setTime(d);
int dDay = c.get(Calendar.DATE);
int dYear = c.get(Calendar.YEAR);
int dMonth = c.get(Calendar.MONTH);
int days=0;
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
for(int i=1;i<dMonth;i++){
days+=months[i];
}
days+=dDay;
return days;
}
上面那个不错再改改就好了
+-------------------------------------+
| date_add(curdate(),interval 21 day) |
+-------------------------------------+
| 2009-09-23 |
+-------------------------------------+
1 row in set (0.00 sec)
import java.text.*;
import java.util.*;
public class Work090100{
public static void main(String[] args) throws ParseException{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d1 = sdf.parse("2009-9-2");
Date d2 = sdf.parse("2009-8-2");
System.out.println("相差:" + (getDays(d1) - getDays(d2)));
}
public static int getDays(Date d)
{
Calendar c = Calendar.getInstance();
c.setTime(d);
int dDay = c.get(Calendar.DATE);
int dYear = c.get(Calendar.YEAR);
int dMonth = c.get(Calendar.MONTH) + 1; //注意month是从0开始计的我们加1
int days=0;
int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(dYear%400==0||dYear%4==0&&dYear%100!=0){
months[2]=29;
}
days=(dYear-1)*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
for(int i=1;i<dMonth;i++){
days+=months[i];
}
days+=dDay;
return days;
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yanliang_xt/archive/2009/09/03/4516579.aspx
数据库存的是datetime类型的数据 减去当前系统时间就是剩余时间了
就像公司里的员工的年龄一样,每年都在变,一般都放的是时间类型,不会去放int类型的数据