四、Date日期类

迁移时间:2017年5月27日18:43:02

Author:Marydon

  (一)对日期进行格式化(日期转字符串)

  自定义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.οnlοad=function() {var date = new Date();var b = date.toLocaleDateString();//获取的格式为:2016年9月19日var d = date.toLocaleTimeString();//下午4:42:46var e = date.toLocaleString();//2016年9月19日 下午4:44:02var f = date.toDateString();//Mon Sep 19 2016var g = date.toUTCString();//Mon, 19 Sep 2016 08:45:42 GMTvar 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;
};

    方式二:(推荐使用)

Date.prototype.formatDate=function(fmt) {   var o = {   "M+" : this.getMonth()+1, // 月份"d+" : this.getDate(), // 日"h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, // 小时"H+" : this.getHours(), // 小时"m+" : this.getMinutes(), // 分"s+" : this.getSeconds(), // 秒"q+" : Math.floor((this.getMonth()+3)/3), // 季度"S" : this.getMilliseconds() // 毫秒
    };   var week = {   "0" : "\u65e5",   "1" : "\u4e00",   "2" : "\u4e8c",   "3" : "\u4e09",   "4" : "\u56db",   "5" : "\u4e94",   "6" : "\u516d"  };   if(/(y+)/.test(fmt)){   fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));   }   if(/(E+)/.test(fmt)){   fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[this.getDay()+""]);   }   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;
}     

  UpdateTime--2017年6月1日08:01:20    

  (二)字符串转日期

    方式一:使用Date.parse()

var day = "2017-06-01";
// 将yyyy-MM-dd转换成yyyy/MM/dd
day = day.replace(/-/g,"/");// 2017/06/01
// 返回1970年1月1日午夜到指定日期(字符串)的毫秒数
var dayTime = Date.parse(day);
var date = new Date(dayTime);
alert(date);   

    注意:

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

    方式二:自定义Date.parseDate()方法

Date.parseDate = function(str)
{if (typeof str == 'string'){// 标准格式: yyyy-MM-ddvar results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) *$/);if (results && results.length > 3){return new Date(parseInt(delZero(results[1])), parseInt(delZero(results[2])) - 1, parseInt(delZero(results[3])));}// 标准格式: yyyy-MM-dd hh:ss:ddresults = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/);if (results && results.length > 6){return new Date(parseInt(delZero(results[1])), parseInt(delZero(results[2])) - 1, parseInt(delZero(results[3])), parseInt(delZero(results[4])), parseInt(delZero(results[5])), parseInt(delZero(results[6])));}// 标准格式: yyyy-MM-dd hh:ss:dd...results = str.match(/^ *(\d{4})-(\d{1,2})-(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/);if (results && results.length > 7){return new Date(parseInt(delZero(results[1])), parseInt(delZero(results[2])) - 1, parseInt(delZero(results[3])), parseInt(delZero(results[4])), parseInt(delZero(results[5])), parseInt(delZero(results[6])), parseInt(delZero(results[7])));}// 标准格式:yyyy/MM/ddresults = str.match(/^ *(\d{4})\/(\d{1,2})\/(\d{1,2}) *$/);if (results && results.length > 3){return new Date(parseInt(delZero(results[1])), parseInt(delZero(results[2])) - 1, parseInt(delZero(results[3])));}// 标准格式:yyyy/MM/dd hh:ss:ddresults = str.match(/^ *(\d{4})\/(\d{1,2})\/(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2}) *$/);if (results && results.length > 6){return new Date(parseInt(delZero(results[1])), parseInt(delZero(results[2])) - 1, parseInt(delZero(results[3])), parseInt(delZero(results[4])), parseInt(delZero(results[5])), parseInt(delZero(results[6])));}// 标准格式:yyyy/MM/dd hh:ss:dd...results = str.match(/^ *(\d{4})\/(\d{1,2})\/(\d{1,2}) +(\d{1,2}):(\d{1,2}):(\d{1,2})\.(\d{1,9}) *$/);if (results && results.length > 7){return new Date(parseInt(delZero(results[1])), parseInt(delZero(results[2])) - 1, parseInt(delZero(results[3])), parseInt(delZero(results[4])), parseInt(delZero(results[5])), parseInt(delZero(results[6])), parseInt(delZero(results[7])));}}return null;
}function delZero(str){if(str.charAt(0) == '0'){return str.substring(1);  }    return str;
}

  测试:

// 字符串转成日期对象
var str = Date.parseDate('2017-06-01');
alert(str);

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

/*** 根据日期返回本周周一和周日的日期* @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/ddinitDate = initDate.replace(/-/g,"/");// 将string转换成DateinitDate = 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);

相关推荐:

  • js获取时间戳的三种方式

转载于:https://www.cnblogs.com/Marydon20170307/p/6914129.html

javascript Date日期类相关推荐

  1. 常用类 (五) ----- Date日期类和Calender日历类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  2. Java Date日期类中的getMonth()与getYear()提示过时警告

    Date日期类中的getMonth()与getYear()提示过时警告,这里的警告是方法过时,不建议使用. 解决方法,使用Calendar类,但是这里的获取月份是,会比数据中的月份少1,这里需要进行加 ...

  3. Java常用API(六)Date 日期类介绍及使用

    一.简单介绍 所在包 : java.util.Date. Date d = new Date(); System.out.println(d); // 打印出的内容是: 月份 日期 时间 时区  年份 ...

  4. dateformat java 格式_java Date日期类和SimpleDateFormat日期类格式

    ~Date表示特定的时间,精确到毫秒 ~构造方法: public Date()//构造Date对象并初始化为当前系统的时间 public Date(long date) //1970-1-1 0:0: ...

  5. html date 设置时间,JavaScript Date(日期)

    JavaScript Date(日期) 对象 日期对象用于处理日期和时间. 在线实例 getFullYear() 使用 getFullYear() 获取年份. getTime() getTime() ...

  6. 新手小白学JAVA 日期类Date SimpleDateFormat Calendar

    1. Date日期类 类 Date 表示一个特定的瞬间,精确到毫秒 1.1 Date的构造函数 Date() 分配一个 Date 对象,以表示分配它的时间(精确到毫秒) Date(long date) ...

  7. 【日期类问题】例2.1日期差值

    二 日期类问题 此类问题解题思路: 定一个锚点日期,如0年1月1日,先算出往后多少年内每一日子距离这个锚点的天数,例如要算两个日期间天数时,便可以将两个日期距离锚点日期之间的天数相减,即可得到. 题目 ...

  8. 三代日期类的基本使用

    三代日期类的基本使用 文章目录 三代日期类的基本使用 一.第一代日期类Date 二.第二代的日期类Calendar 二.第三代的日期类LocalDateTime 总结 一.第一代日期类Date Dat ...

  9. 日期类计算器的实现以及运算符重载

    前言 众所周知,运算符重载是C++类与对象中非常重要的一环.今天我们介绍内容就是通过模拟实现日期类的计算机,来详细的了解运算符是如何重载的. 注:代码给在文末. 目录 前言 创建一个日期类 1.重载 ...

  10. date日期相减 java_03时间日期类

    Java8 在 java.time 包中增加了时间日期相关的API,弥补了 Java8 以前对日期.时间处理的不足. 在介绍Java8新的时间日期API前,先看看 java8 以前我们操作日期时间常用 ...

最新文章

  1. 【NLP】基于机器学习的文本分类!
  2. 转行学Java,如何才能成为年薪50万的Java程序员呢?
  3. 如何获取网站icon
  4. 通过 pxe(网络安装)完成centos 系统的网络安装
  5. mysql group 分页_【MySQL】条件查询之排序聚合分组分页查询
  6. 高中计算机试题一,職业高中高考计算机专业试卷1.doc
  7. 【ElasticSearch】Es 源码之 NamedWriteableRegistry 源码解读
  8. 计算机主板芯片组型号有哪些,怎么才能知道自己的主板芯片的型号?
  9. error: crosses initialization of
  10. MySQLIntegrityConstraintViolationException异常处理
  11. 死锁的处理策略—预防死锁、避免死锁、检测和解除死锁
  12. 【转】如何在Ubuntu 16.04上使用UFW设置防火墙
  13. Ubuntu22.04分区设置
  14. elementUI Drawer 抽屉打开时表单自动聚焦问题解决
  15. 计算机录屏幕和声音的软件是什么,怎么样录制电脑的屏幕和声音?可以进行电脑录像的软件|录制电脑屏幕的方法...
  16. 科技人文丨爱上陌生人的36个问题
  17. 【系列】区块链与以太坊实战(1)-基础知识
  18. 计算机木马是如何产生的?原理是什么?
  19. 【SD2.0大会】刘振飞:微软Office研发成功三大法宝
  20. 改系统注册表 实现Windows XP自动登录

热门文章

  1. 如何准备Java初级和高级的技术面试
  2. 聊聊技术人的中年危机
  3. 技术圈几个牛逼的公号推荐给大家
  4. 在 Google 工作是什么体验?
  5. Stack Overflow 2017 开发者调查报告(程序员必看)
  6. curl基于URL的文件传输工具
  7. [bzoj1033] [ZJOI2008]杀蚂蚁 Big MoNI
  8. 《第三次浪潮》的体会!
  9. C#调用C++动态库时类型转换
  10. webshell提权20种思路