Java 对时间的相关处理

一. 获取当前系统时间和日期并格式化输出:

import java.util.Date;

import java.text.SimpleDateFormat;



public class NowString {

public static void main(String[] args) { 

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式

System.out.println(df.format(new Date()));// new Date()为获取当前系统时间

}

}

二. 在数据库里的日期只以年-月-日的方式输出,可以用下面两种方法:

1、用convert()转化函数:



String sqlst = "select convert(varchar(10),bookDate,126) as convertBookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";



System.out.println(rs.getString("convertBookDate"));



2、利用SimpleDateFormat类:



先要输入两个java包:



import java.util.Date;

import java.text.SimpleDateFormat;



然后:



定义日期格式:SimpleDateFormat sdf = new SimpleDateFormat(yy-MM-dd);



sql语句为:String sqlStr = "select bookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";



输出:



System.out.println(df.format(rs.getDate("bookDate")));

 

三.Java中时间比较大小

方法一:

DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");



String dateBegin=fmt.format(carrierCommand.getDateBegin());



String dateEnd=fmt.format(carrierCommand.getDateEnd());



//如果获得的日期格式不是'2008-05-22',就必须要格式化一下日期



String dateBegin = request.getParameter("dateBegin");



String dateEnd = request.getParameter("dateEnd");



if(java.sql.Date.valueOf(dateBegin).after(java.sql.Date.valueOf(dateEnd))){



//起始日期大于结束日期



errors.rejectValue("dateEnd", null, "起始日期必须小于结束日期!");



}



StringBuffer timeBegin = new StringBuffer();



StringBuffer timeEnd = new StringBuffer();



timeBegin.append(request.getParameter("timeBegin"));



timeEnd.append(request.getParameter("timeEnd"));



timeBegin.append(":00");



timeEnd.append(":00");



if(java.sql.Date.valueOf(dateBegin).equals(java.sql.Date.valueOf(dateEnd)))



{ //起始日期等于结束日期



if(java.sql.Time.valueOf(timeBegin.toString()).equals(java.sql.Time.valueOf



(timeEnd.toString())))//时间相同



{



errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!");



}



if(java.sql.Time.valueOf(timeBegin.toString()).after(java.sql.Time.valueOf



(timeEnd.toString())))//时间相同



{



errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!");



}



}

方法二:

public class test {



public static void main(String args[]) {



int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");



System.out.println("i=="+i);



}



public static int compare_date(String DATE1, String DATE2) {



DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");



try {



Date dt1 = df.parse(DATE1);



Date dt2 = df.parse(DATE2);



if (dt1.getTime() > dt2.getTime()) {



System.out.println("dt1 在dt2前");



return 1;



} else if (dt1.getTime() < dt2.getTime()) {



System.out.println("dt1在dt2后");



return -1;



} else {



return 0;



}



} catch (Exception exception) {



exception.printStackTrace();



}



return 0;



}



}

 

 

 

java.util.Date和java.sql.Date的区别及应用

java.util.Date 就是在除了SQL语句的情况下面使用
java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分
它都有getTime方法返回毫秒数,自然就可以直接构建
java.util.Date d = new java.util.Date(sqlDate.getTime());

 

java.util.Date 是 java.sql.Date 的父类(注意拼写)
前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date
转换是

java.sql.Date date=new Java.sql.Date();

java.util.Date d=new java.util.Date (date.getTime());



java.util.Date转为java.sql.Date

java.util.Date utilDate=new Date();

java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());

java.util.Date utilDate=new Date();

java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());

java.sql.Time sTime=new java.sql.Time(utilDate.getTime());

java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());

 

继承关系:java.lang.Object --》 java.util.Date --》 java.sql.Date
具体的转换关系就是java.util.Date d=new java.util.Date (new Java.sql.Date());

 

sql.date,一般是在数据库的时间字段,util.date一般是日常日期字段

--------------------------------------------------------------------------------
java.sql.Date主要是用于sql中的!
而java.util.Date用语一般的环境下都行!

你可能感兴趣的:(java)