JS与JAVA及Oracle的日期格式化

匿名 (未验证) 提交于 2019-12-02 21:53:52

做开发的时候,有时候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);






易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!