javascript 封装Date日期类实例详解


Posted in Javascript onMay 28, 2017

javascript-封装Date日期类

(一)对日期进行格式化

自定义Date日期类的format()格式化方法

方式一:(非原创)

// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(H)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 
// 例子: 
// (new Date()).Format("yyyy-MM-dd HH:mm:ss.S") ==> 2016-09-19 16:32:53.731
// (new Date()).Format("yyyy-M-d H:m:s:S")   ==> 2016-9-19 16:40:9:955 
Date.prototype.Format = function (fmt) { //author: meizz 
  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;
};

测试:

window.onload=function() {
  var date = new Date();
  var b = date.toLocaleDateString();//获取的格式为:2016年9月19日
  var d = date.toLocaleTimeString();//下午4:42:46
  var e = date.toLocaleString();//2016年9月19日 下午4:44:02
  var f = date.toDateString();//Mon Sep 19 2016
  var g = date.toUTCString();//Mon, 19 Sep 2016 08:45:42 GMT
  var h = date.toString();//Mon Sep 19 2016 16:46:23 GMT+0800 (中国标准时间)
  //自定义日期格式
  var c = date.Format("yyyy-MM-dd HH:mm:ss");//format()方法是自定义的
  document.getElementById("aa").value = c;
};

(二)根据日期返回本周周一和周日的日期

/**
 * 根据日期返回本周周一和周日的日期
 * @param day
 *   参数日期
 * @param num
 *   第几周
 * @return oneWeek
 *   周一,周日所在日期  
 */
function getWeekDate(day,num) {
  
  num = num || 0;
  // 返回值:周一和周日所在的日期
  var oneWeek = {};
  // 初始日期
  var initDate = "";
  // 截取年月日
  initDate = day.split(' ')[0];
  // ie兼容性问题,将yyyy-MM-dd转换成yyyy/MM/dd
  initDate = initDate.replace(/-/g,"/");
  // 将string转换成Date
  initDate = new Date(Date.parse(initDate));//格式只能是yyyy/MM/dd
  
  // 返回 day距离1970 年 1 月 1 日0时0分的毫秒数
  var nowTime = initDate.getTime(); 
  // 返回星期的某一天的数字: 0(周日) 到 6(周六)
  var weekNum = initDate.getDay();
  // 一天所代表的毫秒数
  var oneDayTime = 24 * 60 * 60 * 1000; 
  
  //显示周一
  var MondayTime = nowTime - (weekNum - 1) * oneDayTime ; 
  //显示周日
  var SundayTime = nowTime + (7 - weekNum) * oneDayTime ; 
  if (0 != num) {
    MondayTime += 7 * num * oneDayTime;
    SundayTime += 7 * num * oneDayTime;
  }
  
  //初始化日期时间
  var monday = new Date(MondayTime);
  var sunday = new Date(SundayTime);
  // formatDate是自定义的格式化方法
  monday = monday.formatDate('yyyy-MM-dd');
  sunday = sunday.formatDate('yyyy-MM-dd');
  
  oneWeek.Monday = monday;
  oneWeek.Sunday = sunday;
  
  return oneWeek;
}

 测试:

var week = getWeekDate('2017-05-27',0);    
console.log(week.Monday + "," + week.Sunday);

 注意:

 Date.parse()具有兼容性问题,低版本IE浏览器不支持"yyyy-MM-dd"转换成Date,只支持"yyyy/MM/dd"转换成日期。

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
jQuery实现返回顶部功能适合不支持js的浏览器
Aug 19 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
Jun 15 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
基于js中document.cookie全面解析
Sep 14 Javascript
JS对象与json字符串相互转换实现方法示例
Jun 14 Javascript
vue mounted组件的使用
Jun 18 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
Nov 28 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
May 01 Javascript
Vue实现选择城市功能
May 27 #Javascript
使用 Node.js 对文本内容分词和关键词抽取
May 27 #Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 #Javascript
javascript回调函数的概念理解与用法分析
May 27 #Javascript
原生JavaScript实现的简单省市县三级联动功能示例
May 27 #Javascript
原生JavaScript实现精美的淘宝轮播图效果示例【附demo源码下载】
May 27 #Javascript
详细讲解vue2+vuex+axios
May 27 #Javascript
You might like
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
php实现转换html格式为文本格式的方法
2016/05/16 PHP
PHP cURL获取微信公众号access_token的实例
2018/04/28 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
2020/10/30 PHP
xmlHTTP实例
2006/10/24 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
JavaScript中检测变量是否存在遇到的一些问题
2013/11/11 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
Atitit.js的键盘按键事件捆绑and事件调度
2016/04/01 Javascript
Extjs表单输入框异步校验的插件实现方法
2017/03/20 Javascript
使用AngularJS2中的指令实现按钮的切换效果
2017/03/27 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
js如何验证密码强度
2020/03/18 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
关于小程序优化的一些建议(小结)
2020/12/10 Javascript
Vue ​v-model相关知识总结
2021/01/28 Vue.js
python脚本实现统计日志文件中的ip访问次数代码分享
2014/08/06 Python
Python callable()函数用法实例分析
2018/03/17 Python
详谈Numpy中数组重塑、合并与拆分方法
2018/04/17 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
python3安装crypto出错及解决方法
2019/07/30 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
Python3实现二叉树的最大深度
2019/09/30 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
如何写好升职自荐信
2014/01/06 职场文书
确保工程质量承诺书
2015/04/29 职场文书
解除处分决定书
2015/06/25 职场文书
python实现批量移动文件
2021/04/05 Python
关于React Native使用axios进行网络请求的方法
2021/08/02 Javascript