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往textarea中光标所在位置插入文本的方法
Jun 26 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
Aug 28 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
vue2.0全局组件之pdf详解
Jun 26 Javascript
ES6学习教程之对象字面量详解
Oct 09 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
Dec 26 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
Sep 26 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
react用Redux中央仓库实现一个todolist
Sep 29 Javascript
vue+导航锚点联动-滚动监听和点击平滑滚动跳转实例
Nov 13 Javascript
javascript实现切割轮播效果
Nov 28 Javascript
javascript实现打砖块小游戏(附完整源码)
Sep 18 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
DIY实用性框形天线
2021/03/02 无线电
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
2015/10/08 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
深入理解Promise.all
2018/08/08 Javascript
如何进行微信公众号开发的本地调试的方法
2019/06/16 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
NodeJS多种创建WebSocket监听的方式(三种)
2020/06/04 NodeJs
学习python处理python编码问题
2011/03/13 Python
Python中动态获取对象的属性和方法的教程
2015/04/09 Python
Flask数据库迁移简单介绍
2017/10/24 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
python 接口实现 供第三方调用的例子
2019/08/13 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
德国拖鞋网站:German Slippers
2019/11/08 全球购物
局部内部类是否可以访问非final变量?
2013/04/20 面试题
水利公司纪检监察自我鉴定
2014/02/25 职场文书
股权收购意向书
2014/04/01 职场文书
道德演讲稿
2014/05/21 职场文书
支部书记四风对照材料
2014/08/28 职场文书
实验室安全管理制度
2015/08/05 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Python实现自动玩连连看的脚本分享
2022/04/04 Python
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers