Java字符串转换为日期和时间比较

时间:2021-05-23 18:09:27
DATETIME类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59' 

DATE类型用在你仅需要日期值时,没有时间部分。MySQL检索并且以'YYYY-MM-DD'格式显示DATE值,支持的范围是'1000-01-01'到'9999-12-31'。 
用NOW()初始化的DATETIME列。 

TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。 
'YYYYMMDDHHMMSS'或'YYMMDDHHMMSS'格式的没有任何分隔符的一个字符串,例如,'19970523091528'和'970523091528'被解释为'1997-05-23 09:15:28',但是'971122459015'是不合法的(它有毫无意义的分钟部分)且变成'0000-00-00 00:00:00'。 
YYYYMMDDHHMMSS或YYMMDDHHMMSS格式的一个数字,如果数字认为是一个日期。例如,19830905132800和830905132800被解释作为'1983-09-05 13:28:00'。 

YYYYMMDD或YYMMDD格式的一个数字,如果数字认为是一个日期。例如,19830905和830905被解释作为'1983-09-05'。 

一个返回值可以在一个DATETIME, DATE或TIMESTAMP上下文环境中接受的函数,例如 
NOW()或CURRENT_DATE。 
指定为数字应该是6、8、12或14位长。如果数字是8或14位长,它被假定以YYYYMMDD或YYYYMMDDHHMMSS格式并且年份由头4位数字给出。如果数字是6或12位长,它被假定是以YYMMDD或YYMMDDHHMMSS格式且年份由头2位数字给出。不是这些长度之一的数字通过填补前头的零到最接近的长度来解释。 
TIMESTAMP列使用被指定的值的完整精度的存储合法的值,不考虑显示大小。这有几个含意: 

  总是指定年,月,和日,即使你的列类型是TIMESTAMP(4)或TIMESTAMP(2)。否则,值将不是一个合法的日期并且0将被存储。 




JAVA 字符串与日期类型与整型相互转换 
SimpleDateFormat dd=new SimpleDateFormat("yyyy-MM-dd"); 
String d=dd.format(new Date()); //Date->String 
Date date=dd.parse("2007-12-12");  //String->Date 
SimpleDateFormat ddd=new SimpleDateFormat("yyyyMMdd"); 
int ddd=20071212; 
Date date=dd.parse(ddd+"");   //int->Date 





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

String dateBegin=fmt.format(command.getDateBegin()); 
String dateEnd=fmt.format(command.getDateEnd()); 

//如果获得的日期格式不是'20010-03-13',就必须要格式化一下日期  
  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, "起始与结束日期相同,起始时间必须小于结束时间!"); 
   } 
    }