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 相关文章推荐
JS获取scrollHeight问题想到的标准问题
May 27 Javascript
动态加载外部javascript文件的函数代码分享
Jul 28 Javascript
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
Oct 01 Javascript
Javascript 垃圾收集机制介绍理解
May 14 Javascript
EasyUI闪屏EasyUI页面加载提示(原理+代码+效果图)
Feb 21 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
bootstrap table操作技巧分享
Feb 15 Javascript
微信小程序 获取二维码实例详解
Jun 23 Javascript
vue中promise的使用及异步请求数据的方法
Nov 08 Javascript
微信小程序时间控件picker view使用详解
Dec 28 Javascript
vue实现购物车加减
May 30 Javascript
vue中是怎样监听数组变化的
Oct 24 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
深入解析php中的foreach问题
2013/06/30 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php的dl函数用法实例
2014/11/06 PHP
thinkPHP查询方式小结
2016/01/09 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
2016/02/15 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
JS的递增/递减运算符和带操作的赋值运算符的等价式
2007/12/08 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
JS组件Bootstrap Table使用方法详解
2016/02/02 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
python先序遍历二叉树问题
2017/11/10 Python
Python中一行和多行import模块问题
2018/04/01 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
计算s=f(f(-1.4))的值
2014/05/06 面试题
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
职专应届生求职信
2013/11/16 职场文书
小学教师岗位职责
2013/11/25 职场文书
四年的大学生生活自我评价
2013/12/09 职场文书
青年志愿者事迹材料
2014/02/07 职场文书
市场营销计划书范文
2015/01/16 职场文书
Python基础之条件语句详解
2021/06/16 Python
Python 中面向接口编程
2022/05/20 Python
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android