做开发的时候,有时候JS与Java和Oracle的日期格式不匹配。这时候需要使JS的日期与Oracle的Date一样才能保证数据的一致。
JS日期格式:
Date.prototype.format = function(fmt) { var o = { "M+" : this.getMonth()+1, // 月份 "d+" : this.getDate(), // 日 "h+" : this.getHours(), // Сʱ "m+" : this.getMinutes(), // 分 "s+" : this.getSeconds(), // 秒 "q+" : Math.floor((this.getMonth()+3)/3), // 季度 "S" : this.getMilliseconds() // 毫秒 }; if(/(y+)/.test(fmt)) { fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); } for(var k in o) { if(new RegExp("("+ k +")").test(fmt)){ fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); } } return fmt; } var time = new Date().format("yyyy-MM-dd hh:mm:ss"); $("#trbrqs").val(time); $('#trbrqs').attr("readonly","readonly");
获取当月的第一天与最后一天
$(function() { var nowdays = new Date(); var year = nowdays.getFullYear(); var month = nowdays.getMonth()+1; if(month==0) { month=12; year=year-1; } if (month < 10) { month = "0" + month; } var firstDay = year + "-" + month + "-" + "01"; var myDate = new Date(year, month, 0); var lastDay = year + "-" + month + "-" + myDate.getDate(); var start = $("#ks").val(firstDay) var end = $("#js").val(lastDay); ));
Java日期格式化
Java中用SimpleDateFormate作为格式化日期方法,例如
@Service public class IndexService { public List<IBean> getGztzd(String type) { String date = getDate(type); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = format.format(Calendar.getInstance().getTime()); private String getDate(String type) {// 处理日期 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); String date = ""; if (type.equals("1")) {// 上个星期的日期 /* c.setTime(new Date()); c.add(Calendar.DATE, -7);*/ c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); Date day = c.getTime(); date = format.format(day); } if (type.equals("2")) {// 上个月的日期 只考虑当年 不包含从 今年的1月份到去年的12月 c.setTime(new Date()); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1); date = format.format(c.getTime()); } if (type.equals("3")) {// 上一年的日期 只考虑当年 c.add(Calendar.YEAR, 0); c.set(Calendar.DAY_OF_YEAR, 1); date = format.format(c.getTime()); } return date; } private String ztrq(String time){//昨天的日期 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); String date = ""; c.setTime(new Date()); c.add(Calendar.DATE,-1); date = format.format(c.getTime()); return date; } private String ylrq(String time){//上个月的日期 考虑跨年 今年的1月份计算去年12月份 一个月前的日期 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); String date = ""; c.setTime(new Date()); c.add(Calendar.MONTH, 0); c.set(Calendar.DAY_OF_MONTH, 1); date = format.format(c.getTime()); return date; } private String nlrq(String time){//年累计 同上 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); Calendar c = Calendar.getInstance(); String date = ""; c.setTime(new Date()); c.add(Calendar.YEAR, 0); c.set(Calendar.DAY_OF_YEAR, 1); date = format.format(c.getTime()); return date; }
Java获取上个月的最后一天
String lastDay = lastMonthDay(); private String lastMonthDay(){ /* Calendar cal = Calendar.getInstance(); //下面可以设置月份,注:月份设置要减1,所以设置1月就是1-1,设置2月就是2-1,如此类推 cal.set(Calendar.MONTH, 1-1); //调到上个月 cal.add(Calendar.MONTH, -1); //得到一个月最最后一天日期(31/30/29/28) int MaxDay=cal.getActualMaximum(Calendar.DAY_OF_MONTH); //按你的要求设置时间 cal.set( cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), MaxDay, 23, 59, 59); //按格式输出 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String date = ""; date = sdf.format(cal.getTime());*/ Calendar c = Calendar.getInstance(); c.add(Calendar.MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM"); String time = format.format(c.getTime()); //得到一个月最后一天日期(31/30/29/28) int MaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH); //按你的要求设置时间 c.set( c.get(Calendar.YEAR), c.get(Calendar.MONTH), MaxDay, 23, 59, 59); //按格式输出 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String date = sdf.format(c.getTime()); //上月最后一天 return date; } }
Java Calendar
有时候我们需要对格式化的日期进行操作,比如在Java中计算一年前的今天等日期的计算,就需要用到Calendar抽象类。一般情况都需要与SimpleDateFormate配合使用
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat df1 = new SimpleDateFormat("yyyyMMdd"); java.util.Date timeNow; java.util.Date timeNow1; String qn = null; try { timeNow = df1.parse(month); String date1 = df.format(timeNow); timeNow1 = df.parse(date1); Calendar calendar = Calendar.getInstance(); calendar.setTime(timeNow1); calendar.add(Calendar.YEAR, -1); //计算一年前的日期 qn = df.format(calendar.getTime()); //输出格式为 yyyy-MM-dd的日期} catch (ParseException e) {// TODO Auto-generated catch block e.printStackTrace(); }
Oracle的日期格式化需要用到to_date函数
oracle计算一年前的今天的日期
create or replace view v_rgq_one as select "CODE","NAME","CUR_TIME","CUR_AMOUNT","VARIATION","LAST_TIME","LAST_AMOUNT" from ( select cur_year.sj as cur_time, cur_year.yql as cur_amount, cur_year.yql-last_year.yql as variation, last_year.sj as last_time, last_year.yql as last_amount from SMCOUNT cur_year left join sm_count last_year on cur_year.sj = to_char(add_months(to_date(last_year.sj, 'YYYY-MM-DD'), +12), 'YYYY-MM-DD') order by cur_year.sj desc);
转载请标明出处:JS与JAVA及Oracle的日期格式化
文章来源: JS与JAVA及Oracle的日期格式化