JavaScript Date 知识浅析


Posted in Javascript onJanuary 29, 2017

Date函数

  • new Date()

Date 对象会自动把当前日期和时间保存为其初始值。

  • date.getDate()

从 Date 对象返回一个月中的某一天 (1 ~ 31)。

  • date.getDay()

从 Date 对象返回一周中的某一天 (0 ~ 6)。周日是0。

  • date.getMonth()

从 Date 对象返回月份 (0 ~ 11)。

  • date.getFullYear()

从 Date 对象以四位数字返回年份

  • date.getHours()

返回 Date 对象的小时 (0 ~ 23)。

  • date.getMinutes()

返回 Date 对象的分钟 (0 ~ 59)。

  • date.getSeconds()

返回 Date 对象的秒数 (0 ~ 59)。

  • date.getMilliseconds()

返回 Date 对象的毫秒(0 ~ 999)。

  • date.getTime()

返回 1970 年 1 月 1 日至今的毫秒数。

  • date.getTimezoneOffset()

返回格林威治时间(GMT 或 UTC)和本地时间之间的时差,以分钟为单位。返回之所以以分钟计,而不是以小时计,原因是某些

国家所占有的时区甚至不到一个小时的间隔。

  • date.getUTCDate()

根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。

  • date.getUTCDay()

根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。周日是0。

  • date.getUTCMonth()

根据世界时从 Date 对象返回月份 (0 ~ 11)。

  • date.getUTCFullYear()

根据世界时从 Date 对象返回四位数的年份。

  • date.getUTCHours()

根据世界时返回 Date 对象的小时 (0 ~ 23)。

  • date.getUTCMinutes()

根据世界时返回 Date 对象的分钟 (0 ~ 59)。

  • date.getUTCSeconds()

根据世界时返回 Date 对象的秒钟 (0 ~ 59)。

  • date.getUTCMilliseconds()

根据世界时返回 Date 对象的毫秒(0 ~ 999)。

  • Date.parse(string)

返回1970年1月1日午夜到指定日期(字符串)的毫秒数。

  • date.setDate(int)

设置 Date 对象中月的某一天 (1 ~ 31)。返回调整过的日期的毫秒表示。

  • date.setMonth(month[, day])

设置 Date 对象中月份 (0 ~ 11)。day参数可选,表示该月的某一天介于 1 ~ 31 之间。

  • date.setFullYear(year[, month, day])

设置 Date 对象中的年份(四位数字)。month参数可选,表示月份介于 0 ~ 11 之间。day参数可选,表示该月的某一天介于 1 ~ 31 之间。

  • date.setHours(hours[, minutes, seconds, milliseconds])

设置 Date 对象中的小时 (0 ~ 23)。minutes参数可选,表示分钟数介于 0 ~ 59 之间。seconds参数可选,表示分钟数介于 0

~ 59 之间。milliseconds参数可选,表示分钟数介于 0 ~ 999 之间。

  • date.setMinutes(minutes[, seconds, milliseconds])

设置 Date 对象中的分钟 (0 ~ 59)。seconds参数可选,表示分钟数介于 0 ~ 59 之间。milliseconds参数可选,表示分钟数介于 0 ~ 999 之间。

  • date.setSeconds(seconds[, milliseconds])

设置 Date 对象中的秒钟 (0 ~ 59)。milliseconds参数可选,表示分钟数介于 0 ~ 999 之间。

  • date.setMilliseconds(int)

设置 Date 对象中的毫秒 (0 ~ 999)。

  • date.setTime(long)

设置的日期和时间据 GMT 时间 1970 年 1 月 1 日午夜之间的毫秒数。以毫秒形式表示日期可以使它独立于时区。

  • date.setUTCDate(int)

根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。

  • date.setUTCMonth(minutes[, seconds, milliseconds])

根据世界时设置 Date 对象中的月份 (0 ~ 11)。seconds参数可选,表示分钟数介于 0 ~ 59 之间。milliseconds参数可选,表

示分钟数介于 0 ~ 999 之间。

  • date.setUTCFullYear(year[, month, day])

根据世界时设置 Date 对象中的年份(四位数字)。month参数可选,表示月份介于 0 ~ 11 之间。day参数可选,表示该月的

某一天介于 1 ~ 31 之间。

  • date.setUTCHours(hours[, minutes, seconds, milliseconds])

根据世界时设置 Date 对象中的小时 (0 ~ 23)。minutes参数可选,表示分钟数介于 0 ~ 59 之间。seconds参数可选,表示分

钟数介于 0 ~ 59 之间。milliseconds参数可选,表示分钟数介于 0 ~ 999 之间。

  • date.setUTCMinutes(minutes[, seconds, milliseconds])

根据世界时设置 Date 对象中的分钟 (0 ~ 59)。seconds参数可选,表示分钟数介于 0 ~ 59 之间。milliseconds参数可选,表

示分钟数介于 0 ~ 999 之间。

  • date.setUTCSeconds(seconds[, milliseconds])

根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。milliseconds参数可选,表示分钟数介于 0 ~ 999 之间。

  • date.setUTCMilliseconds(int)

根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。

  • date.toString()

把 Date 对象转换为字符串。

  • date.toTimeString()

把 Date 对象的时间部分转换为字符串。

  • date.toDateString()

把 Date 对象的日期部分转换为字符串。

  • date.toUTCString()

根据世界时,把 Date 对象转换为字符串。

  • date.toLocaleString()

根据本地时间格式,把 Date 对象转换为字符串。

  • date.toLocaleTimeString()

根据本地时间格式,把 Date 对象的时间部分转换为字符串。

  • date.toLocaleDateString()

根据本地时间格式,把 Date 对象的日期部分转换为字符串。

  • Date.UTC(year,month,day[,hour,minute,second,milliseconds])

根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。年月日必填,时分秒毫秒都是选填的。

  • date.valueOf()

返回 Date 对象的原始值。与 Date.getTime 返回的值相等。即 1970 年 1 月 1 日至今的毫秒数。

<html>
 <head>
 <style type="text/css">
  body {
  font-size:14px;  
  }
  </style>
 </head>
 <body>
 <script type="text/javascript">
  function write(name, value) {
  document.write(name + " = " + value + "<br/>");
  }
  var date = new Date();//Date 对象会自动把当前日期和时间保存为其初始值。
  write("new Date()", date);
  write("date.getDate()", date.getDate());//从 Date 对象返回一个月中的某一天 (1 ~ 31)。
  write("date.getDay()", date.getDay());//从 Date 对象返回一周中的某一天 (0 ~ 6)。周日是0。
  write("date.getMonth()", date.getMonth());//从 Date 对象返回月份 (0 ~ 11)。
  write("date.getFullYear()", date.getFullYear());//从 Date 对象以四位数字返回年份。
  write("date.getHours()", date.getHours());//返回 Date 对象的小时 (0 ~ 23)。
  write("date.getMinutes()", date.getMinutes());//返回 Date 对象的分钟 (0 ~ 59)。
  write("date.getSeconds()", date.getSeconds());//返回 Date 对象的秒数 (0 ~ 59)。
  write("date.getMilliseconds()", date.getMilliseconds());//返回 Date 对象的毫秒(0 ~ 999)。
  write("date.getTime()", date.getTime());//返回 1970 年 1 月 1 日至今的毫秒数。
  write("date.getTimezoneOffset()/60", date.getTimezoneOffset()/60);//返回格林威治时间(GMT 或 UTC)和本地时间之间的时差,以分钟为单位。返回之所以以分钟计,而不是以小时计,原因是某些国家所占有的时区甚至不到一个小时的间隔。
  write("date.getUTCDate()", date.getUTCDate());//根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
  write("date.getUTCDay()", date.getUTCDay());//根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。周日是0。
  write("date.getUTCMonth()", date.getUTCMonth());//根据世界时从 Date 对象返回月份 (0 ~ 11)。
  write("date.getUTCFullYear()", date.getUTCFullYear());//根据世界时从 Date 对象返回四位数的年份。
  write("date.getUTCHours()", date.getUTCHours());//根据世界时返回 Date 对象的小时 (0 ~ 23)。
  write("date.getUTCMinutes()", date.getUTCMinutes());//根据世界时返回 Date 对象的分钟 (0 ~ 59)。
  write("date.getUTCSeconds()", date.getUTCSeconds());//根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
  write("date.getUTCMilliseconds()", date.getUTCMilliseconds());//根据世界时返回 Date 对象的毫秒(0 ~ 999)。
  write("Date.parse(string)", Date.parse(date.toString()));//返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
  write("date.setDate(int)", date.setDate(1));//设置 Date 对象中月的某一天 (1 ~ 31)。返回调整过的日期的毫秒表示。
  write("date.setMonth(int)", date.setMonth(0));//设置 Date 对象中月份 (0 ~ 11)。
  write("date.setFullYear(int)", date.setFullYear(2017));//设置 Date 对象中的年份(四位数字)。
  write("date.setHours(int)", date.setHours(0));//设置 Date 对象中的小时 (0 ~ 23)。
  write("date.setMinutes(int)", date.setMinutes(0));//设置 Date 对象中的分钟 (0 ~ 59)。
  write("date.setSeconds(int)", date.setSeconds(0));//设置 Date 对象中的秒钟 (0 ~ 59)。
  write("date.setMilliseconds(int)", date.setMilliseconds(0));//设置 Date 对象中的毫秒 (0 ~ 999)。
  write("date.setTime(long)", date.setTime(Date.UTC(2017,0,1)));//设置的日期和时间据 GMT 时间 1970 年 1 月 1 日午夜之间的毫秒数。以毫秒形式表示日期可以使它独立于时区。
  write("date.setUTCDate(int)", date.setUTCDate(1));//根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
  write("date.setUTCMonth(int)", date.setUTCMonth(0));//根据世界时设置 Date 对象中的月份 (0 ~ 11)。
  write("date.setUTCFullYear(int)", date.setUTCFullYear(2017));//根据世界时设置 Date 对象中的年份(四位数字)。
  write("date.setUTCHours(int)", date.setUTCHours(0));//根据世界时设置 Date 对象中的小时 (0 ~ 23)。
  write("date.setUTCMinutes(int)", date.setUTCMinutes(0));//根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
  write("date.setUTCSeconds(int)", date.setUTCSeconds(0));//根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
  write("date.setUTCMilliseconds(long)", date.setUTCMilliseconds(0));//根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。
  write("date.toString()", date.toString());//把 Date 对象转换为字符串。
  write("date.toTimeString()", date.toTimeString());//把 Date 对象的时间部分转换为字符串。
  write("date.toDateString()", date.toDateString());//把 Date 对象的日期部分转换为字符串。
  write("date.toUTCString()", date.toUTCString());//根据世界时,把 Date 对象转换为字符串。
  write("date.toLocaleString()", date.toLocaleString());//根据本地时间格式,把 Date 对象转换为字符串。
  write("date.toLocaleTimeString()", date.toLocaleTimeString());//根据本地时间格式,把 Date 对象的时间部分转换为字符串。
  write("date.toLocaleDateString()", date.toLocaleDateString());//根据本地时间格式,把 Date 对象的日期部分转换为字符串。
  write("Date.UTC(year,month,day[,hour,minute,second,milliseconds])", Date.UTC(2017,0,1,0,0,0));//根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。年月日必填,时分秒毫秒都是选填的。
  write("date.valueOf()", date.valueOf());//返回 Date 对象的原始值。与 Date.getTime 返回的值相等。即 1970 年 1 月 1 日至今的毫秒数。
 </script>
 </body>
</html>

格式化Date

由于JS本身并不提供格式化日期的函数。因此必须借助prototype属性来添加自定义的日期格式化方法。

<html>
 <head>
 <meta charset="UTF8" />
 </head>
 <body>
 <script type="text/javascript">
  /*
  年(y)可以用 1-4 个占位符
  月(M)、日(d)、时(H,24时)、时(h,12时)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符
  毫秒(S)只能用 1 个占位符(是 1-3 位数字) 
  AM或PM只能用 1 个占位符(是 2 位英文)
  上午或下午(T)只能用 1 个占位符(是 2 位中文)
  星期(E)可以用 1-3 个占位符
  季度(q)只能用 1 个占位符(是 1 位数字)
  */
  Date.prototype.format = function(fmt) {
  var map = {
   "M+" : this.getMonth() + 1, //月
   "d+" : this.getDate(),  //日
   "H+" : this.getHours(),  //24时
   /*
   上午12时只代表当天上午的12时,下午的12时代表当天下午的12时,
   0时代表第二天的开始,即前面一天12时已过0时开始计算新一天的时间,
   虽然说时间上跟前面那一天下午12时重合,但日期已经发生更改,所以不能说0时就是12时
   */
   "h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12,//12时
   "m+" : this.getMinutes(), //分
   "s+" : this.getSeconds(), //秒
   "S" : this.getMilliseconds(), //毫秒
   "t" : this.getHours() < 12 ? "AM" : "PM",
   "T" : this.getHours() < 12 ? "上午" : "下午",
  };
  var week = {
   "0" : "日",
   "1" : "一",
   "2" : "二",
   "3" : "三",
   "4" : "四",
   "5" : "五",
   "6" : "六",
  }
  var quarter = {
   "0" : "一",
   "1" : "二",
   "2" : "三",
   "3" : "四",
  }
  if(/(y+)/.test(fmt)) {
   fmt = fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  }
  if(/(E+)/.test(fmt)) {
   var weekPreStr;
   switch(RegExp.$1.length) {
   case 1:
    weekPreStr = "";
   break;
   case 2:
    weekPreStr = "周";
   break;
   default:
    weekPreStr = "星期";
   break;
   }
   fmt = fmt.replace(RegExp.$1, weekPreStr + week[this.getDay()]);
  }
  if(/(q)/.test(fmt)) {
   fmt = fmt.replace(RegExp.$1, quarter[Math.floor(this.getMonth() / 3)]);
  }
  for(var key in map) {
   if(new RegExp("(" + key + ")").test(fmt)) {
   fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? map[key] : ("00" + map[key]).substr((map[key]+"").length));
   }
  }
  return fmt;
  }
  function write(str) {
  document.write(str + "<br/>");
  }
  var date = new Date();
  write(date.toString());
  write(date.toUTCString());
  write(date.toLocaleString());
  write("");
  write(date.format("yy-M-d t h:m:s.S"));
  write(date.format("yyyy-MM-dd hh:mm:ss.S"));
  write(date.format("yyyy-MM-dd E HH:mm:ss"));
  write(date.format("yyyy-MM-dd EE hh:mm:ss"));
  write(date.format("yyyy-MM-dd EEE hh:mm:ss"));
  write(date.format("yyyy年MM月dd日 EEE hh:mm:ss 第q季度"));
 </script>
 </body>
</html>

对Date设置超出范围的参数

即使设置了超出范围的参数也不会报错,只会计算“最大合法值”与“超出值”相加得到的date。

<html>
 <body>
 <script type="text/javascript">
  var date = new Date();
  date.setFullYear(2016,12,32, 0, 0, 0);
  document.write(date);
 </script>
 </body>
</html>

JavaScript Date 知识浅析

增减Date

<html>
 <body>
 <script type="text/javascript">
  var date = new Date();
  date.setFullYear(2017,0,1, 0, 0, 0);
  document.write("date = " + date + "<br/>");
  date.setDate(date.getDate()+5);
  document.write("after date + 5, date = " + date + "<br/>");
  date.setDate(date.getDate()-10);
  document.write("after date - 10, date = " + date + "<br/>");
 </script>
 </body>
</html>

JavaScript Date 知识浅析

比较Date

<html>
 <head>
 <meta charset="UTF8" />
 </head>
 <body>
 <script type="text/javascript">
  var date1 = new Date();
  var date2 = new Date();
  date1.setTime(Date.UTC(2017,0,1));
  date2.setTime(Date.UTC(2016,11,31));
  document.write("date1 = " + date1.toLocaleString() + "<br/>");
  document.write("date2 = " + date2.toLocaleString() + "<br/>");
  document.write("date1 - date2 = " + (date1 - date2) + "毫秒<br/>");
  document.write("date1 - date2 = " + (date1 - date2)/1000/60/60 + "小时<br/>");
  document.write("date1 > date2 = " + (date1 > date2) + "<br/>");
  document.write("date1 < date2 = " + (date1 < date2) + "<br/>");
 </script>
 </body>
</html>

JavaScript Date 知识浅析

以上所述是小编给大家介绍的JavaScript Date 知识浅析,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
filemanage功能中用到的common.js
Apr 08 Javascript
JavaScript的继承的封装介绍
Oct 15 Javascript
微信小程序购物商城系统开发系列-目录结构介绍
Nov 21 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
带你了解session和cookie作用原理区别和用法
Aug 14 Javascript
Vue实现typeahead组件功能(非常靠谱)
Aug 26 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
Aug 27 Javascript
详解Vue中使用插槽(slot)、聚类插槽
Apr 12 Javascript
详解json串反转义(消除反斜杠)
Aug 12 Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 Javascript
在Vue中获取自定义属性方法:data-id的实例
Sep 09 Javascript
JavaScript实现时钟滴答声效果
Jan 29 #Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
Jan 29 #Javascript
jQuery图片轮播功能实例代码
Jan 29 #Javascript
jQuery代码实现实时获取时间
Jan 29 #Javascript
用director.js实现前端路由使用实例
Jan 27 #Javascript
详解bootstrap的modal-remote两种加载方式【强化】
Jan 27 #Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
Jan 26 #Javascript
You might like
浅析PHP的ASCII码转换类
2013/07/05 PHP
php jsonp单引号转义
2014/11/23 PHP
php字符串截取函数用法分析
2014/11/25 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
jQuery之自动完成组件的深入解析
2013/06/19 Javascript
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
JavaScript字符串对象substr方法入门实例(用于截取字符串)
2014/10/16 Javascript
Javascript中作用域的详细介绍
2016/10/06 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python基础教程之获取本机ip数据包示例
2014/02/10 Python
简单的Python抓taobao图片爬虫
2014/10/26 Python
在Python中封装GObject模块进行图形化程序编程的教程
2015/04/14 Python
python fabric实现远程部署
2017/01/05 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
Python多线程爬取豆瓣影评API接口
2019/10/22 Python
Python如何在bool函数中取值
2020/09/21 Python
python中random模块详解
2021/03/01 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
铭立家具面试题
2012/12/06 面试题
数字天堂软件测试面试题
2012/12/23 面试题
销售副总经理岗位职责
2013/12/11 职场文书
工厂保安员岗位职责
2014/01/31 职场文书
《老王》教学反思
2014/02/23 职场文书
合作协议书模板
2014/10/10 职场文书
追悼会悼词大全
2015/06/23 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
python3 hdf5文件 遍历代码
2021/05/19 Python
Mysql效率优化定位较低sql的两种方式
2021/05/26 MySQL
简单聊聊Golang中defer预计算参数
2022/03/25 Golang