入门知识,自己总结,有错误请大家指出纠正,多多指教
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,取数据时直接转化为Stringselect 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')