1. 获取当前系统时间和日期并格式化输出
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()为获取当前系统时间 } }
2. 在数据库里的日期只以年-月-日的方式输出,可以用下面两种方法:
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")));
3.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; } }
4.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());
5.取得指定日期是星期几
取得指定日期是星期几可以采用下面两种方式取得日期是星期几:
a、使用Calendar类
- //根据日期取得星期几
- public static String getWeek(Date date){
- String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;
- if(week_index<0){
- week_index = 0;
- }
- return weeks[week_index];
- }
b、使用SimpleDateFormat类
- //根据日期取得星期几
- public static String getWeek(Date date){
- SimpleDateFormat sdf = new SimpleDateFormat("EEEE");
- String week = sdf.format(date);
- return week;
- }
注:格式化字符串存在区分大小写
对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“十一月”;MM代表月份,如“11”;
yyyy代表年份,如“2010”;dd代表天,如“25”
6.取得日期是某年的第几周
根据日期入得日期是某年的第几周。
- //取得日期是某年的第几周
- public static int getWeekOfYear(Date date){
- Calendar cal = Calendar.getInstance();
- cal.setTime(date);
- int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);
- return week_of_year;
- }
7.得到某年的某个月有多少天
已知年份和月份,取得该月有多少天。
- //取得某个月有多少天
- public static int getDaysOfMonth(int year,int month){
- Calendar cal = Calendar.getInstance();
- cal.set(Calendar.YEAR, year);
- cal.set(Calendar.MONTH, month-1);
- int days_of_month = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
- return days_of_month;
- }
8.取得两个日期之间的相差多少天
已知两个日期,计算它们之间相差多少天。
- // 取得两个日期之间的相差多少天
- public static long getDaysBetween(Date date0, Date date1) {
- long daysBetween = (date0.getTime() - date1.getTime() + 1000000) / 86400000;// 86400000=3600*24*1000 用立即数,减少乘法计算的开销
- return daysBetween;
- }
9.在Java中将String型转换成Date型
java.util.Date = java.text.DateFormat.getDateInstance().parse(date String); java.util.Date = java.text.DateFormat.getDateInstance().parse(date String);or SimpleDateFormat format = new SimpleDateFormat( "dd.MM.yyyy" ); Date date = format.parse( myString ); SimpleDateFormat format = new SimpleDateFormat( "dd.MM.yyyy" ); Date date= format.parse( myString );
10.开发过程中会遇到输出某种编码的字符,如iso8859-1等,实现输出一个某种编码的字符串:
//字符串打散重组 Public String translate (String str) { String tempStr = ""; try { tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; }