比如:客户从页面输入发布有效天数=21 存入数据库我从数据库读出有效天数=21,如何利用系统当前时间来换算21,从而取得剩余天数???
解决方案 »
- java 热键OR快捷键OR总之各种键
- (急)请哪位仁兄帮忙解决一道多线程与输入输出的综合问题?
- eclipse jni
- 求助:如何改变输出到文本文件中的字体?
- 请问,能不能提供一个曲线图根据数据库数据变化的例子~~~~~
- 我想数据库中新增一条记录通知前台的程序显示,请问如何实现
- 这段程序有错吗?
- 如何把二进制源文件加载到数据库的目标表中?
- 一个想法~~~可不可以做查询具体表的bean,不需传参数的。
- 请问哪儿有JavaTM 2 Platform, Standard Edition v 1.3.1 下载??高分相赠!
- 几道常见的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类型的数据