js預設一個月時間差的時間段效果詳解
不少網頁功能有這樣的效果,那就是預先在文字框設定一個時間段,這個時間差也許幾天,也許是一週,也許是一個月。
當然需要根據實際情況設定,下面就是一個設定時間差為一個月的程式碼例項。
程式碼如下:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script type="text/javascript"> 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 begin=new Date(); var end=new Date(); new Date(begin.setMonth((new Date().getMonth()-1))); var begintime= begin.format("yyyy-MM-dd"); var endtime=end.format("yyyy-MM-dd"); window.onload=function(){ var ostart=document.getElementById("start"); var oend=document.getElementById("end"); ostart.value=begintime; oend.value=endtime; } </script> </head> <body> <input type="text" id="start"/> <input type="text" id="end"/> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).Date.prototype.format = function(format) {},為Date原型新增一個format()方法,此方法能夠對時間日期字串進行格式化。
(2).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
},此物件非常巧妙,屬性可以作為正規表示式使用在後面。
(3).if (/(y+)/.test(format))
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length))
判斷字串是否匹配相應的正規表示式。
如果匹配,那麼就將年份部分替換為真實的年份數字,然後再給句"y"的資料進行字串擷取,比如如果是"yyyy",那麼就保持完整的年份,比如2015,如果是"yy"就保留兩位"15"。
(4).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))
進行遍歷操作,根據需要完成了個位數前面補領效果。
二.相關閱讀:
(1).prototype可以參閱javascript prototype原型一章節。
(2).Date物件可以參閱JavaScript Date物件一章節。
(3).replace()可以參閱正規表示式replace()函式一章節。
(4).substr()方法可以參閱javascript substr()一章節。
相關文章
- 兩個時間戳的時間差時間戳
- JS判定一個給定的時間區間在哪些時間段範圍內JS
- JavaScript計算兩個時間點之間的時間差JavaScript
- JavaScript自動更新時間效果詳解JavaScript
- mysql時間操作(時間差和時間戳和時間字串的互轉)MySql時間戳字串
- JS判定一個給定的時間在某個時間範圍內JS
- 時間段時間點自己理解
- 歷時一個月時間,小程式“成語猜題”版本效果圖
- 畫像預先計算的一點設想.時間段分片
- ORACLE計算2個時間段相差時間小時、分、秒Oracle
- JS實現檢查給定時間範圍是否在每天的某個時間段內JS
- oracle計算兩個日期的時間差時分秒Oracle
- 解決MongoDB儲存時間時差的問題MongoDB
- MySQL為欄位新增預設時間(插入時間)MySql
- 時間差計算
- js時間顯示設定JS
- 這些遊戲“懷胎”時間堪比哪吒,預約時間一個比一個長遊戲
- 獲取時間戳,幾個時間點的時間戳時間戳
- js獲取某時間的當天0點時間戳 與某時間的當週週一0點時間戳JS時間戳
- **java設定一段程式碼執行超時時間(轉)**Java
- php 獲取時間差PHP
- 不同時間段的光色模型模型
- sleep 時間段不佔指令碼執行時間指令碼
- JS時間操作JS
- 時間複雜度(詳解)時間複雜度
- ubantu 16.04 PHP 時間差 8 小時解決辦法PHP
- Ubuntu 16.04 PHP 時間差 8 小時解決辦法UbuntuPHP
- MySQL查詢時間段MySql
- echarts 睡眠時間段+日期Echarts
- JPA時間段查詢
- layui laydate日期時間範圍,時間預設設定為23:59:59UI
- 關於MySql 設定一個間隔時間 執行一個事件MySql事件
- 新增時間段,但是不能與原來陣列中的時間段有重疊陣列
- Linux時間設定系統時間、硬體時間和時間服務Linux
- dmesg 時間誤差現象
- JS設定時間格式為2010-01-01,以及時間加減JS
- go-carbon 1.2.2 版本釋出了,新增時間設定和時間差比較功能Go
- Go各時間字串使用詳解Go字串
- js常用時間方法JS