注意:java.util和java.sql中都有Date这个类,不知道用哪一个了,你可以写死java.sql.Date time = .....


1. Java计算时间依靠1970年1月1日开始的毫秒数.
2. Date类的构造函数Date()返回代表当前创建的时刻的对象。Date的方法getTime()返回一个long值在数值上等于1970年1月1日之前或之后的时刻。
3. DateFormat类用来转换Date到String,反之亦然。静态方法getDateInstance()返回DateFormat的缺省格式;getDateInstance(DateFormat.FIELD)返回指定的DateFormat对象格式。Format(Date d)方法返回String表示日期,例如"January 1,2002."反过来,parse(String s)方法返回以参数字符串表示的Date对象。
4. format()方法返回的字符串格式根据不同地区的时间设置而有所不同。
5. GregorianCalendear类有两个重要的构造函数:GregorianCalerdar(),返回代表当前创建时间的对象;GregorianCalendar(int year,int month,int date)返回代表任意日期的对象。GregorianCalendar类的getTime()方法返回日期对象。Add(int field,int amount)方法通过加或减时间单位,象天数,月数或年数来计算日期。
GregorianCalendar和 时间
两个GregorianCalendar的构造函数可以用来处理时间。前者创建一个表示日期,小时和分钟的对象:

GregorianCalendar(int year, int month, int date, int hour, int minute)

第二个创建一个表示一个日期,小时,分钟和秒:

GregorianCalendar(int year, int month, int date, int hour, int minute, int second)

首先,我应该提醒一下,每一个构造函数需要时间信息中的日期信息(年,月,日)。如果你想说2:30 p.m.,你必须指出日期。
同样,每一个GregorianCalendar构造函数创建一个在时间上使用毫秒计算的对象。所以,如果你的构造函数只提供年,月,日参数,那小时,分钟,秒和毫秒的值将被置0.
DateFormat和时间
你可以使用静态方法getDateTimeInstance(int dateStyle,int timeStyle)来建立DateFormat对象来显示时间和日期。这个方法表明你想要的日期和时间格式。如果你喜欢使用缺省格式,可以使用getDateTimeInstance()来代替它。
你可以使用静态方法getTimeInstance(int timeStyle)创建DateFormat对象来显示正确的时间。
下面的程序示范了getDateTimeInstance()和getTimeInstance()怎样工作:

import java.util.*; 

import java.text.*; 


public class Apollo { 

 public static void main(String[] args) { 

 GregorianCalendar liftOffApollo11 = new GregorianCalendar(1969, Calendar.JULY, 16, 9, 32); 

 Date d = liftOffApollo11.getTime(); 

 DateFormat df1 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); 

 DateFormat df2 = DateFormat.getTimeInstance(DateFormat.SHORT); 

 String s1 = df1.format(d); 

 String s2 = df2.format(d); 

 System.out.println(s1); 

 System.out.println(s2); 

 } 

}


在我的电脑上,上面的程序显示如下:

Jul 16, 1969 9:32:00 AM
9:32 AM
(输出根据你所在得地区有所不同)


import java.util.*; 

import java.text.*; 

import java.util.Calendar; 


public class VeDate { 

/** 

 * 获取现在时间 

 * 

 * @return 返回时间类型 yyyy-MM-dd HH:mm:ss 

 */ 

public static Date getNowDate() { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

 String dateString = formatter.format(currentTime); 

 ParsePosition pos = new ParsePosition(8); 

 Date currentTime_2 = formatter.parse(dateString, pos); 

 return currentTime_2; 

} 


/** 

 * 获取现在时间 

 * 

 * @return返回短时间格式 yyyy-MM-dd 

 */ 

public static Date getNowDateShort() { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 

 String dateString = formatter.format(currentTime); 

 ParsePosition pos = new ParsePosition(8); 

 Date currentTime_2 = formatter.parse(dateString, pos); 

 return currentTime_2; 

} 


/** 

 * 获取现在时间 

 * 

 * @return返回字符串格式 yyyy-MM-dd HH:mm:ss 

 */ 

public static String getStringDate() { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

 String dateString = formatter.format(currentTime); 

 return dateString; 

} 


/** 

 * 获取现在时间 

 * 

 * @return 返回短时间字符串格式yyyy-MM-dd 

 */ 

public static String getStringDateShort() { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 

 String dateString = formatter.format(currentTime); 

 return dateString; 

} 


/** 

 * 获取时间 小时:分;秒 HH:mm:ss 

 * 

 * @return 

 */ 

public static String getTimeShort() { 

 SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss"); 

 Date currentTime = new Date(); 

 String dateString = formatter.format(currentTime); 

 return dateString; 

} 


/** 

 * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss 

 * 

 * @param strDate 

 * @return 

 */ 

public static Date strToDateLong(String strDate) { 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

 ParsePosition pos = new ParsePosition(0); 

 Date strtodate = formatter.parse(strDate, pos); 

 return strtodate; 

} 


/** 

 * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss 

 * 

 * @param dateDate 

 * @return 

 */ 

public static String dateToStrLong(java.util.Date dateDate) { 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

 String dateString = formatter.format(dateDate); 

 return dateString; 

} 


/** 

 * 将短时间格式时间转换为字符串 yyyy-MM-dd 

 * 

 * @param dateDate 

 * @param k 

 * @return 

 */ 

public static String dateToStr(java.util.Date dateDate) { 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 

 String dateString = formatter.format(dateDate); 

 return dateString; 

} 


/** 

 * 将短时间格式字符串转换为时间 yyyy-MM-dd 

 * 

 * @param strDate 

 * @return 

 */ 

public static Date strToDate(String strDate) { 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 

 ParsePosition pos = new ParsePosition(0); 

 Date strtodate = formatter.parse(strDate, pos); 

 return strtodate; 

} 


/** 

 * 得到现在时间 

 * 

 * @return 

 */ 

public static Date getNow() { 

 Date currentTime = new Date(); 

 return currentTime; 

} 


/** 

 * 提取一个月中的最后一天 

 * 

 * @param day 

 * @return 

 */ 

public static Date getLastDate(long day) { 

 Date date = new Date(); 

 long date_3_hm = date.getTime() - 3600000 * 34 * day; 

 Date date_3_hm_date = new Date(date_3_hm); 

 return date_3_hm_date; 

} 


/** 

 * 得到现在时间 

 * 

 * @return 字符串 yyyyMMdd HHmmss 

 */ 

public static String getStringToday() { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss"); 

 String dateString = formatter.format(currentTime); 

 return dateString; 

} 


/** 

 * 得到现在小时 

 */ 

public static String getHour() { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

 String dateString = formatter.format(currentTime); 

 String hour; 

 hour = dateString.substring(11, 13); 

 return hour; 

} 


/** 

 * 得到现在分钟 

 * 

 * @return 

 */ 

public static String getTime() { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

 String dateString = formatter.format(currentTime); 

 String min; 

 min = dateString.substring(14, 16); 

 return min; 

} 


/** 

 * 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。 

 * 

 * @param sformat 

 * yyyyMMddhhmmss 

 * @return 

 */ 

public static String getUserDate(String sformat) { 

 Date currentTime = new Date(); 

 SimpleDateFormat formatter = new SimpleDateFormat(sformat); 

 String dateString = formatter.format(currentTime); 

 return dateString; 

} 


/** 

 * 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟 

 */ 

public static String getTwoHour(String st1, String st2) { 

 String[] kk = null; 

 String[] jj = null; 

 kk = st1.split(":"); 

 jj = st2.split(":"); 

 if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0])) 

 return "0"; 

 else { 

 double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60; 

 double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60; 

 if ((y - u) > 0) 

 return y - u + ""; 

 else 

 return "0"; 

 } 

} 


/** 

 * 得到二个日期间的间隔天数 

 */ 

public static String getTwoDay(String sj1, String sj2) { 

 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); 

 long day = 0; 

 try { 

 java.util.Date date = myFormatter.parse(sj1); 

 java.util.Date mydate = myFormatter.parse(sj2); 

 day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); 

 } catch (Exception e) { 

 return ""; 

 } 

 return day + ""; 

} 


/** 

 * 时间前推或后推分钟,其中JJ表示分钟. 

 */ 

public static String getPreTime(String sj1, String jj) { 

 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 

 String mydate1 = ""; 

 try { 

 Date date1 = format.parse(sj1); 

 long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60; 

 date1.setTime(Time * 1000); 

 mydate1 = format.format(date1); 

 } catch (Exception e) { 

 } 

 return mydate1; 

} 


/** 

 * 得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数 

 */ 

public static String getNextDay(String nowdate, String delay) { 

 try{ 

 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 

 String mdate = ""; 

 Date d = strToDate(nowdate); 

 long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60; 

 d.setTime(myTime * 1000); 

 mdate = format.format(d); 

 return mdate; 

 }catch(Exception e){ 

 return ""; 

 } 

} 


/** 

 * 判断是否润年 

 * 

 * @param ddate 

 * @return 

 */ 

public static boolean isLeapYear(String ddate) { 


 /** 

 * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年 

 * 3.能被4整除同时能被100整除则不是闰年 

 */ 

 Date d = strToDate(ddate); 

 GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance(); 

 gc.setTime(d); 

 int year = gc.get(Calendar.YEAR); 

 if ((year % 400) == 0) 

 return true; 

 else if ((year % 4) == 0) { 

 if ((year % 100) == 0) 

 return false; 

 else 

 return true; 

 } else 

 return false; 

} 


/** 

 * 返回美国时间格式 26 Apr 2006 

 * 

 * @param str 

 * @return 

 */ 

public static String getEDate(String str) { 

 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); 

 ParsePosition pos = new ParsePosition(0); 

 Date strtodate = formatter.parse(str, pos); 

 String j = strtodate.toString(); 

 String[] k = j.split(" "); 

 return k[2] + k[1].toUpperCase() + k[5].substring(2, 4); 

} 


/** 

 * 获取一个月的最后一天 

 * 

 * @param dat 

 * @return 

 */ 

public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd 

 String str = dat.substring(0, 8); 

 String month = dat.substring(5, 7); 

 int mon = Integer.parseInt(month); 

 if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) { 

 str += "31"; 

 } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) { 

 str += "30"; 

 } else { 

 if (isLeapYear(dat)) { 

 str += "29"; 

 } else { 

 str += "28"; 

 } 

 } 

 return str; 

}