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设置按钮的disabled属性的实现代码
Nov 28 Javascript
Javascript加载速度慢的解决方案
Mar 11 Javascript
jQuery将多条数据插入模态框的示例代码
Sep 25 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
js实现动态加载脚本的方法实例汇总
Nov 02 Javascript
简单对比分析JavaScript中的apply,call与this的使用
Dec 04 Javascript
深入分析javascript中console命令
Aug 14 Javascript
js关于getImageData跨域问题的解决方法
Oct 14 Javascript
微信小程序中的onLoad详解及简单实例
Apr 05 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
Jun 13 Javascript
浅析为什么a="abc" 不等于 a=new String("abc")
Oct 25 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
Aug 03 jQuery
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中文字母数字验证码实现代码
2008/04/25 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
PHPThumb图片处理实例
2014/05/03 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
php实现面包屑导航例子分享
2015/12/19 PHP
php实现批量修改文件名称的方法
2016/07/23 PHP
PHP图像识别技术原理与实现
2016/10/27 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
Yii 框架控制器创建使用及控制器响应操作示例
2019/10/14 PHP
关于Yii2框架跑脚本时内存泄漏问题的分析与解决
2019/12/01 PHP
jQuery事件绑定.on()简要概述及应用
2013/02/07 Javascript
jquery自定义右键菜单、全选、不连续选择
2016/03/01 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
JS多文件上传的实例代码
2017/01/11 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
微信小程序传值以及获取值方法的详解
2019/04/29 Javascript
Python是编译运行的验证方法
2015/01/30 Python
Python遍历指定文件及文件夹的方法
2015/05/09 Python
django中的setting最佳配置小结
2017/11/21 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python调用c++ ctype list传数组或者返回数组的方法
2019/02/13 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
结束运行python的方法
2020/06/16 Python
Python爬虫与反爬虫大战
2020/07/30 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
html5 Web SQL Database 之事务处理函数transaction与executeSQL解析
2013/11/07 HTML / CSS
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
企业年检委托书范本
2014/10/14 职场文书
学校隐患排查制度
2015/08/05 职场文书
庭外和解协议书
2016/03/23 职场文书
golang json数组拼接的实例
2021/04/28 Golang