首页 > 其他分享 >日期格式化的开发与代码编写(一)

日期格式化的开发与代码编写(一)

时间:2023-02-23 23:10:48浏览次数:32  
标签:sysdate 格式化 代码 Date var dual date 编写 select


日期格式化的开发与代码编写

js的日期格式化

js的日期格式化获取当前时间

jS与Java和Oracle的日期格式不匹配,js生成的日期月份前格式化带0。

方式一、

Date.prototype.format = function (format) { 
var o = {
"M+": this.getMonth() + 1, // month
"d+": this.getDate(), // day
"h+": this.getHours(), // hour
"m+": this.getMinutes(), // minute
"s+": this.getSeconds(), // second
"q+": Math.floor((this.getMonth() + 3) / 3), // quarter
"S": this.getMilliseconds()
// millisecond
};
if (/(y+)/.test(format))
format = format.replace(RegExp.$1, (this.getFullYear() + "")
.substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(format))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
return format;
}
var dt= new Date(data); 

return dt.format("yyyy-MM-dd hh:mm:ss");

方式二:yyyy-MM-dd hh:mm:ss

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");

方式三:yyyyMMdd

function getNowFormatDate() 
{
var day = new Date();
var Year = 0;
var Month = 0;
var Day = 0;
var CurrentDate = "";
Year = day.getFullYear();//ie火狐下都可以
Month = day.getMonth()+1;
Day = day.getDate();
CurrentDate += Year + "";
if (Month >= 10 )
{
CurrentDate += Month + "";
}
else
{
CurrentDate += "0" + Month + "";
}
if (Day >= 10 )
{
CurrentDate += Day ;
}
else
{
CurrentDate += "0" + Day ;
}

return CurrentDate;
}

var namesalt = getNowFormatDate();

 

js的日期对象

在javascript中日期也是它的内置对象,所以我们要对日期进行获取和操作,必须实例化对象。

1.创建日期对象
  var dateobj=new Date();
  将会包含本地时间的信息,包括年月日时分秒 星期 

  注意:月份和星期都是从0开始计算的

2.获取日期方法

Date() 返回当日的日期和时间。 
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。

3.设置日期的方法

setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
<script type="text/javascript">
var date=new Date();
document.write(date.getTime()+"<br/>");
document.write(date.getFullYear()+"<br/>");
document.write((date.getMonth()+1)+"<br/>");
document.write(date.getDate()+"<br/>");
var today=date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日";
document.write(today+"<br/>");
document.write(date.getHours()+"<br/>");
document.write(date.getMinutes()+"<br/>");
document.write(date.getSeconds()+"<br/>");
today=date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日 "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
document.write(today+"<br/>");
var day=date.getDay();
var week;
switch(day){
case 0:week="星期日";break;
case 1:week="星期一";break;
case 2:week="星期二";break;
case 3:week="星期三";break;
case 4:week="星期四";break;
case 5:week="星期五";break;
case 6:week="星期六";break;
}
document.write(week+"<br/>");
today=date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日 "+week+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
document.write(today+"<br/>");
</script>

日期格式化的开发与代码编写(一)_日期格式化

 

js计算当月的第一天与最后一天

$(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);

));

 

倒计时显示时间

function getcha (now,end) {
var arr=[];
var cha=(end.getTime()-now.getTime())/1000;
var days=parseInt(cha/(60*60*24));
arr.push(days)
cha%=(60*60*24);
var hours=parseInt(cha/(60*60));
arr.push(hours)
cha%=60*60;
var mints=parseInt(cha/60);
arr.push(mints)
var sends=cha%60;
arr.push(sends)

return arr;
}

window.onload=function () {
var spans=document.getElementsByTagName("span");
var end=new Date();
end.setFullYear(2012);
end.setMonth(7);
end.setDate(12);
end.setHours(12);
end.setMinutes(0);
end.setSeconds(0);
var now=new Date();
for (var i=0; i<getcha (now,end).length; i++) {
spans[i].innerHTML=getcha (now,end)[i]
}



setInterval(function () {
var now=new Date();
for (var i=0; i<getcha (now,end).length; i++) {
spans[i].innerHTML=getcha (now,end)[i]
}
},1000)
}

<div>
距离奥运会还有<span></span>天<span></span>小时<span></span>分钟<span></span>秒
</div>

 

Oracle的日期格式化

oracle的日期格式化获取当前时间

oracle的日期格式定义

Year:      
yy two digits 两位年 显示值:07
yyy three digits 三位年 显示值:007
yyyy four digits 四位年 显示值:2007

Month:
mm number 两位月 显示值:11
mon abbreviated 字符集表示 显示值:11月,若是英文版,显示nov
month spelled out 字符集表示 显示值:11月,若是英文版,显示november

Day:
dd number 当月第几天 显示值:02
ddd number 当年第几天 显示值:02
dy abbreviated 当周第几天简写 显示值:星期五,若是英文版,显示fri
day spelled out 当周第几天全写 显示值:星期五,若是英文版,显示friday
ddspth spelled out, ordinal twelfth

Hour:
hh two digits 12小时进制 显示值:01
hh24 two digits 24小时进制 显示值:13

Minute:
mi two digits 60进制 显示值:45

Second:
ss two digits 60进制 显示值:25

其它
Q digit 季度 显示值:4
WW digit 当年第几周 显示值:44
W digit 当月第几周 显示值:1

24小时格式下时间范围为: 0:00:00 - 23:59:59....
12小时格式下时间范围为: 1:00:00 - 12:59:59 ....

通常日期格式都是以时间戳的形式存放在数据库里,当前端页面通过接口查询时,我们会将一个对象的某些属性查出来返回给页面。

日期格式化的开发与代码编写(一)_进制_02

日期格式化的开发与代码编写(一)_git_03

 

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" )

原因是:页面将数据传到后台,是以字符串的形式。所以时间格式会出错。加上此注解,后台可解析时间格式的字符串。但是后台传到前台,前台没办法解析。需要做如下操作。

 

@JsonFormat注解

<tr style="height: 50px">
<th style="width: 70px">拆除日期:</th>
<td style="width: 230px" colspan="3">
<input name="removeTime" class="easyui-my97" data-options="required:true" style="width: 200px;" >
</td>
</tr>
<td style="width: 200px" colspan="3">
<input name="approveTime" class="easyui-textbox" style="width: 170px;" >
</td>
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date removeTime;//拆除日期
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date approveTime;//审批时间

 

oracle查找月的第一天,最后一天 

SELECT Trunc(Trunc(SYSDATE, 'MONTH') - 1, 'MONTH') First_Day_Last_Month, 
Trunc(SYSDATE, 'MONTH') - 1 / 86400 Last_Day_Last_Month,
Trunc(SYSDATE, 'MONTH') First_Day_Cur_Month,
LAST_DAY(Trunc(SYSDATE, 'MONTH')) + 1 - 1 / 86400 Last_Day_Cur_Month
FROM dual;

 

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);

 

查看某张表一小时前的数据

select * from ct_user as of timestamp sysdate-(1/(24));

add_months(x,y)或者add_months(times,months)函数:计算多少个月以后的日期,如果后者为负数,则计算当前日期之前多少个月的日期。

select add_months(sysdate,-6) from dual;//查询的结果是当前时间半年前的时间
select add_months(sysdate,6) from dual;//查询的结果是当前时间半年后的时间
select ename, hiredate from emp where hiredate <= add_months(sysdate, -288);//入职时间超过24年-288 = -24*12

 

last_day():返回指定日期所在月份的最后一天;

select last_day(sysdate) from dual;//查询当前月份的最后一天:
select last_day(to_date('1992-10-09','yyyy-mm-dd')) from dual;//查询某天所在月份的最后一天:

 

to_date()函数,将字符串转为日期

注意:SQL中不区分大小写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采用了mi代替分钟

另要以24小时的形式显示出来要用HH24

update t_date set d3=to_date('2016-12-20','YYYY-MM-DD') where id=1;

update t_date set d3=to_date('2016-12-20 18:31:34','YYYY-MM-DD HH24:MI:SS') where id=1;

两个日期间的天数      

select floor(sysdate - to_date('20020405','yyyymmdd')) from dual;

补充;查找2002-02-28至2002-02-01间除星期一和七的天数  

select count(*)      
from ( select rownum-1 rnum
from all_objects
where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-
02-01','yyyy-mm-dd')+1
)
where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
not in ( '1', '7' )

 

months_between()函数返回两个日期之间的月份数。如果两个日期月份内天数相同,或者都是某个月的最后一天,返回一个整数,否则,返回数值带小数,以每天1/31月来计算月中剩余天数。如果日期1日期2小 ,返回值为负数。

months_between(to_date('1999.11.29','yyyy.mm.dd'), to_date('1998.11.29','yyyy.mm.dd')) 

返回 12

注:两个参数均为同样月份的29号,所以返回一整数。


months_between(to_date('1999.11.29','yyyy.mm.dd'), to_date('1998.12.24','yyyy.mm.dd'))

返回 13.16129

如果两个时间的日期不同,他就算出日期差都除以31,结果就一堆小数。

select months_between(to_date('01-31-2008','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;      
1
select months_between(to_date('02-01-2008','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
1.03225806451613

 

定义函数处理月份差

create or replace function fun_month_num (var_begin_date in varchar2,var_end_date in varchar2)  
return number
as
is_begin_date date;
is_end_date date;
is_count number(10);
i number(10);
j number(10);
is_this_date date;
begin
is_begin_date := to_date(var_begin_date,'yyyy-mm-dd');
is_end_date := to_date(var_end_date,'yyyy-mm-dd');
is_this_date := last_day(is_end_date) ;
is_count := 0 ;

loop
exit when is_this_date < last_day(is_begin_date)+1 ;
is_count := is_count+1;
is_this_date := last_day(is_this_date)-32;

end loop;

return is_count;
end;

使用

select fun_month_num('2008-09-30','2008-02-01') from dual;

 

next_day()

NEXT_DAY(date,char) date参数为日期型

 返回下个星期的日期,day为1-7或星期日-星期六,1表示星期日 
   1 2 3 4 5 6 7      
   日 一 二 三 四 五 六  

next_day(sysdate,6)是从当前开始下一个星期五。
后面的数字是从星期日开始算起。
select next_day(to_date('2014-4-1','yyyy-MM-dd'),'星期三') from dual;

从特定日期得到之后的第一个星期三的日期。

select next_day( sysdate, 'MONDAY') from dual;
可以求出当前日期的下个星期一。

next_day(to_date('1999.11.24','yyyy.mm.dd'),'friday')
// 返回 1999年11月26日
//1999年11月24日是星期三,第二个参数是星期五,是两天后。

 

to_char()日期格式转换

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from dual;   //日期转化为字符串   
select to_char(sysdate,'yyyy') as nowYear from dual; //获取时间的年
select to_char(sysdate,'mm') as nowMonth from dual; //获取时间的月
select to_char(sysdate,'dd') as nowDay from dual; //获取时间的日
select to_char(sysdate,'hh24') as nowHour from dual; //获取时间的时
select to_char(sysdate,'mi') as nowMinute from dual; //获取时间的分
select to_char(sysdate,'ss') as nowSecond from dual; //获取时间的秒

获取小时数对比

select sysdate ,to_char(sysdate,'hh') from dual;   
//2003-10-13 19:35:21 07
select sysdate ,to_char(sysdate,'hh24') from dual;
//2003-10-13 19:35:21 19

 

trunc()函数处理日期

    语法格式:TRUNC(date[,fmt])

  其中:date 一个日期值;fmt 日期格式。

    该日期将按指定的日期格式截取;忽略它则由最近的日期截取。

select trunc(sysdate) from dual;--2017/2/13,返回当前时间
select trunc(sysdate,'yy') from dual;--2017/1/1,返回当年第一天
select trunc(sysdate,'mm') from dual;--2017/2/1,返回当月的第一天
select trunc(sysdate,'d') from dual;--2017/2/12,返回当前星期的第一天,即星期天
select trunc(sysdate,'dd') from dual;--2017/2/13,返回当前日期,今天是2017/2/13
select trunc(sysdate ,'HH24') from dual;--2017/2/13 15:00:00,返回本小时的开始时间
select trunc(sysdate ,'MI') from dual;--2017/2/13 15:13:00,返回本分钟的开始时间

trunc(sysdate,'year') YEAR, //返回当前年的1月1日,无时分秒
trunc(sysdate,'month') MONTH , //返回当前月的1日,无时分秒
trunc(sysdate,'day') DAY //返回当前星期的星期天,无时分秒

对number类型则截取小数,截取时并不对数据进行四舍五入。
select trunc(123.567,2) from dual;--123.56,将小数点右边指定位数后面的截去;
select trunc(123.567,-2) from dual;--100,第二个参数可以为负数,表示将小数点左边指定位数后面的部分截去,即均以0记;
select trunc(123.567) from dual;--123,默认截去小数点后面的部分;

 

extract()函数用于从date类型或interval类型中截取到特定的部分;

select extract(year from sysdate) from dual;
select extract(month from sysdate) from dual;
select extract(day from sysdate) from dual;
select extract(Hour from systimestamp) from dual;
select extract(minute from systimestamp) from dual;
select extract(second from systimestamp) from dual;
select extract(timezone_hour from systimestamp) th from dual;
select extract(timezone_minute from systimestamp) tm from dual;
select extract(timezone_region from systimestamp) tr from dual;
select extract(timezone_abbr from systimestamp) ta from dual;

两个日期之间的具体时间间隔,可以用extract()函数;

select extract(day from dt2-dt1) day
,extract(hour from dt2-dt1) hour
,extract(minute from dt2-dt1) minute
,extract(second from dt2-dt1) second
from
( select to_timestamp('2013-02-04 15:07:00','yyyy-mm-dd hh24:mi:ss') dt1,to_timestamp('2013-11-30 22:08:46', 'yyyy-mm-dd hh24:mi:ss') dt2 from dual
);

 

round[舍入到最接近的日期](day:舍入到最接近的星期日) 。与trunc不同的是,trunc()不进行四舍五入操作,只截取

select sysdate S1, 
round(sysdate) S2 ,
round(sysdate,'year') YEAR,
round(sysdate,'month') MONTH ,
round(sysdate,'day') DAY from dual

 

greatest返回日期列表中最晚日期

select greatest('01-1月-04','04-1月-04','10-2月-04') from dual

 

oracle日期换算

oracle计算小时,分,秒,毫秒      

select      
Days,
A,
TRUNC(A*24) Hours,
TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
from
(
select
trunc(sysdate) Days,
sysdate - trunc(sysdate) A
from dual
)

oracle日期计算换算

floor((date2-date1) /365) 作为年      
floor((date2-date1, 365) /30) 作为月
d(mod(date2-date1, 365), 30)作为日.
当前时间减去7分钟的时间 
select sysdate,sysdate - interval ’7’ MINUTE from dual
当前时间减去7小时的时间
select sysdate - interval ’7’ hour from dual
当前时间减去7天的时间
select sysdate - interval ’7’ day from dual
当前时间减去7月的时间
select sysdate,sysdate - interval ’7’ month from dual
当前时间减去7年的时间
select sysdate,sysdate - interval ’7’ year from dual
时间间隔乘以一个数字
select sysdate,sysdate - 8 *interval ’2’ hour from dual

日期天换算为秒

select (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from dual

 

标签:sysdate,格式化,代码,Date,var,dual,date,编写,select
From: https://blog.51cto.com/u_11837698/6081986

相关文章

  • 日期格式化的开发与代码编写(二)
    日期格式化的开发与代码编写(二)java日期格式化日期格式/***系统总的失效日期.*/publicstaticfinalStringDATE_FOREVER="9999-12-31";/**时间格式.*/......
  • 数组数据结构的使用与代码编写(二)
    数组数据结构的使用与代码编写(二)定义数组Studentstudents[]=newStudent[3];students[0]=newStudent("张三",10);students[1]=newStudent("李四",11);stud......
  • MyBatis-Plus 代码生成
    MyBatis-Plus的代码生成功能十分人性化,即支持通过简单的配置实现,也可以通过自定义模板实现。这里列出项目中的常用配置供参考,其他配置可以参考官网:https://baomidou.com/......
  • 代码随想录打卡第9天 | KMP算法
    进行一下字符串总结1,双指针的灵活运用,删除元素倒转链表(后序添加元素,如果是从前往后添加,每次添加元素都要将之后的元素后移o(n*2)的复杂度)2,反转......
  • js的继承的实现与代码编写
    js的继承的实现与代码编写一、继承  对象的一个类可以从现有的类中派生,并且拥有现有的类的方法或是属性,这和过程叫做继承。被继承的类叫做父类或是基类,继承的类叫做子类......
  • 深入学习jquery源码之jQuery中高质量的代码
    深入学习jquery源码之jQuery中高质量的代码1、this指向的问题 functionStudent(name,age,grade,school){Person.apply(this,arguments);}他就具备了Pe......
  • TCGA代码分析流程 - 3.3 生存模型:Lasso回归
    LASSO回归什么是Lasso回归Tibshirani(1996) 引入了LASSO (LeastAbsoluteShrinkageandSelectionOperator)模型,用于参数的选择和收缩。当我们分析大数据时,这个模型......
  • 代码随想录算法Day23 | 669. 修剪二叉搜索树 ,108.将有序数组转换为二叉搜索树 , 538.把
    669.修剪二叉搜索树题目链接:669.修剪二叉搜索树-力扣(LeetCode)思路在删除二叉搜索树中节点值为key的节点这一题中,分五种情况来考虑,找到节点后删除即可。而这道题......
  • 项目源代码统计工具对比
    利用空闲时间分别对git-fame(1.15.2)、cloc(1.96)和SourceCounter(3.5.33.73)三款软件源代码统计工具进行对比分析,结果如下:1、git-fame主要偏向于项目成员成果贡献统计,包......
  • 无代码适用于哪些应用开发场景
    ​数字化转型是企业业绩增长的重要推动力,已成为企业间的共识,并获得了企业决策者的广泛认同。然而,数字化转型之路上充满挑战,比如不断涌现的创新性业务需求、信息孤岛、切换成......