JavaScript时间操作工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | /** * 时间操作工具类 * * @author zwq * */ var TimeFrameUtil = { /** * 格式化日期 * @param date {Date} 日期 * @param pattern {string} 格式,例:"yyyy-MM-dd HH:mm:ss" * @returns {String} 返回格式化后的日期,如:"2018-01-22 18:04:30" */ format : function (date, pattern) { var time = { "M+" : date.getMonth() + 1 , "d+" : date.getDate(), "H+" : date.getHours(), "m+" : date.getMinutes(), "s+" : date.getSeconds(), "q+" : Math.floor((date.getMonth() + 3 ) / 3 ), "S+" : date.getMilliseconds() }; if (/(y+)/i.test(pattern)) { pattern = pattern.replace(RegExp.$ 1 , (date.getFullYear() + '' ).substr( 4 - RegExp.$ 1 .length)); } for (var k in time) { if ( new RegExp( "(" + k + ")" ).test(pattern)) { pattern = pattern.replace(RegExp.$ 1 , RegExp.$ 1 .length == 1 ? time[k] : ( "00" + time[k]).substr(( "" + time[k]).length)); } } return pattern; }, /** * 将指定时间偏移几小时 * @param time {String} 指定时间,例:"2018-01-24 17:00" * @param offset {Number} 偏移量,正数代表加几小时,负数代表减几小时,例:1 * @param pattern {String} 返回时间的格式,例:"yyyy-MM-dd HH:mm" * @returns {String} 返回计算后的时间,如:"2018-01-24 18:00" */ offsetHours : function (time, offset, pattern) { var date = new Date(Date.parse(time)); var yyyy = date.getFullYear(); var MM = date.getMonth(); var dd = date.getDate(); var HH = date.getHours() + offset; var mm = date.getMinutes(); var ss = date.getSeconds(); return this .format( new Date(yyyy, MM, dd, HH, mm, ss), pattern); }, /** * 将指定月份偏移几个月 * @param month {String} 指定月份,例:"2018-01" * @param offset {Number} 偏移量,负数代表上几个月,正数代表下几个月,例:1 * @returns {String} 返回计算后的月份,如:"2018-02" */ offsetMonths : function (month, offset) { var date = new Date(Date.parse(month)); var year = date.getFullYear(); var month = date.getMonth(); var preOrNextMonth = month + offset; return this .format( new Date(year, preOrNextMonth), "yyyy-MM" ); }, /** * 获取指定日期是星期几 * @param date {String} 指定日期,例:"2018-01-23" * @returns {Number} 返回星期几(1-7),如:2 */ dayOfWeek : function (date) { var time = new Date(Date.parse(date)); var weekday= new Array( 7 ); weekday[ 0 ]= 7 ; weekday[ 1 ]= 1 ; weekday[ 2 ]= 2 ; weekday[ 3 ]= 3 ; weekday[ 4 ]= 4 ; weekday[ 5 ]= 5 ; weekday[ 6 ]= 6 ; return weekday[time.getDay()]; }, /** * 获取指定月份有多少天 * @param month {String} 指定月份:例"2018-01" * @returns {number} 返回指定月份有多少天,如:31 */ daysInMonth : function (month) { var date = new Date(Date.parse(month)); var year = date.getFullYear(); var month = date.getMonth(); if (month == 1 ) { if ((year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 ) return 29 ; else return 28 ; } else if ((month <= 6 && month % 2 == 0 ) || (month > 6 && month % 2 == 1 )) return 31 ; else return 30 ; } }; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决