入门知识,自己总结,有错误请大家指出纠正,多多指教
Oracle数据库特别说明,如无特别说明则为sql

在java项目中,很多情况下我们都会使用的时间工具,但是在使用时间时格式不是固定不变的,在数据库存储时使用datetime格式,在Java类中建立对象时使用string格式,而对时间进行操作时使用string或者long格式,在此进行一些简单的描述

此处前端时间是以easyUI中datetimebox样式输入的。

一、用户输入在前台输入时间与数据库中的时间比较
在sql语言中,使用between等谓词比较时间,需将时间转化为Date类型
用户输入时间后在java中以string类型接收,使用SimpleDateFormat类中的parse方法转换,转换格式有"yyyy-MM-dd HH:mm:ss"与"yyyy-MM-dd"两种

public PageData onlineSelectPaper(Paper paper,String beginDate,String endDate,Integer stuId) throws Exception{
	Date beginDate = null;
	Date endDate = null;
	if(begindate!=null&begindate!=""&enddate!=null&enddate!=""){
		//parse解析字符串的文本,生成 Date。
		beginDate = new SimpleDateFormat("yyyy-MM-dd").parse(beginDate);
		endDate = new SimpleDateFormat("yyyy-MM-dd").parse(endDate);
	}
	return onlineTestService.onlineSelectPaper(paper, beginDate, endDate, stuId);
}

二、在后台中获取当前时间然后传入数据库
使用SimpleDateFormat类中的format方法将获取的 Date 格式转化为日期/时间字符串

public void onlineSubmitPaper(StudentPaper studentPaper){
	studentPaper.setEndTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
	onlineTestService.onlineSubmitPaper(studentPaper);
}

三、转换为毫秒值long类型
要将时间转化为long类型,首先需将时间转化为Date类型
转化为long类型后可对时间进行增减操作,如加上两分钟
1、转换当前时间

public long onlinGetDateTime(){
	return new Date().getTime();
}

2、转换已有的日期/时间字符串
long c = new Date(cronExpression).getTime()不可用,此方法已过时
但在前端页面可以使用

//cronExpression是接受的日期/时间字符串
long ce = 0;
try {
	ce = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(cronExpression).getTime();
} catch (ParseException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
}

四、将毫秒转化为时间
此处是转换为日期/时间字符串

//date是毫秒值
Calendar calender = Calendar.getInstance();
calender.setTimeInMillis(date);
cronExpression = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calender.getTime());

我想大家应该都已经发现了,时间转换主要是围绕Date类与SimpleDateFormat类展开的,如果需要更多的知识大家可以去JavaAPI中查询

五、从前台传入时间为String类型2019-03-23
数据库中时间格式为String类型,格式为2019-3-23,2019-03-13,2019/3/23或者2019/03/23,可使用以下方式转换:to_date
此处为Oracle数据库,使用between范围包含首尾

//删除本地信息
String sql = "delete from aa";
//拼接oracle条件
if(userOA!=null&&!userOA.trim().equals("")){
	sql += " where staffoanum='"+userOA+"'";
	if(dateBegin!=null&&!dateBegin.trim().equals("")&&dateEnd!=null&&!dateEnd.trim().equals("")){
		sql += " and to_date(currentdate,'yyyy-MM-dd') between to_date('"+dateBegin+"','yyyy-MM-dd') and to_date('"+dateEnd+"','yyyy-MM-dd')";
	}
}

也可使用replace直接替换,between支持字符串范围限定,但是此处不推荐,因为2019-3-23与2019/3/23不带0的格式在比较时会出现错误

dateBegin=dateBegin.replaceAll("-", "/");
dateEnd=dateEnd.replaceAll("-", "/");

六、时间加上或减去一天

public static Date dateAdd(Date date, int days) {
		if(null == date) return null;
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.add(Calendar.DAY_OF_YEAR, days);
		return c.getTime();
	}

七、oracle数据库中存储日期格式是Date,取数据时直接转化为String
select t.usernum,to_char (min(t.cardtime),'yyyy-mm-dd hh24:mi:ss') mintime,to_char (max(t.cardtime),'yyyy-mm-dd hh24:mi:ss') maxtime from Bs_t_Tugchecktime t group by t.usernum,to_char(t.cardtime + 19/24,'yyyy/MM/dd')