最近在封装一个关于时间函数的功能时,竟发现这些最基本的函数都有些生疏,于是进来来总结复习下,巩固自己记忆的同时,希望能帮助到需要的人
  首先了解下日期对象相关的方法
var date = new Date();// 使用new+构造函数Date创建一个对象
console.log(date); // date内部相当于默认的调用了toString(): Tue Sep 19 2017 08:54:04 GMT+0800 (中国标准时间)
console.log(date.toString()); // Tue Sep 19 2017 08:54:04 GMT+0800 (中国标准时间)
console.log(date.toDateString()); //外国的的显示方式: Tue Sep 19 2017
console.log(date.toLocaleDateString()); // 年月日 : 2017/9/19
console.log(date.toTimeString()); // 外国人喜欢看的方式: 08:54:04 GMT+0800 (中国标准时间)
console.log(date.toLocaleTimeString()); //国内喜欢看的方式: 上午8:54:04

  

  看到这里是不是觉得太多而且类似不好记,其实并不用全部记住,只要记住new Date()就行,其他的等用到的时候看看就行。下面我们就这个方法展开:

 1.注意:在用new Date()创建对象的时候传入的是2016,10,1,而打印的结果是11月,这是因为日期格式的月份是从0开始的,10自然就代表11月了。
 var date = new Date(2016,10,1);
 console.log(date); // Tue Nov 01 2016 00:00:00 GMT+0800 (中国标准时间)
2.看看这次传入的对象,估计很多人已然会觉得会打印11月,如果这样想你就错了,这里传入的是字符串,与上面的不一样,该方法会将字符串中的内容转化成相应的月份。要注意与上面的分开哦
 var  date = new Date("2016-10-1"); //正常的输出  10月1号
 console.log(date); // Sat Oct 01 2016 00:00:00 GMT+0800 (中国标准时间)
3.现在我们来聊聊时间戳,别被这个名词给忽悠住了,其实他就是时间的毫秒形式,也就是从格林威治时间到现在的毫秒数
  下面5种方法都可以得到时间戳,估计很多人不乐意了,这怎么记得住,没关系,只要记住常用的就行。如:Date.now() 和 new Date("1970-1-1").getTime(),一个是当前时间,一个是任意时间
 var  date = Date.parse("2016-10-1");
var date = new Date("1970-1-1 0:0:0").getTime() // 注意打印这个结果是-28800000,刚好偏差了8小时,要注意时区的概念,背景时间应该是1970.1.1 8;00才为0的
console.log(date);//1475251200000 13位的毫秒形式 1970 1 1 00:00:00:000
// 日期的本质就是13位的毫秒数字 这样的好处是为了便于计算 var date = +new Date(); // 获取当前的13位数字表示的时间
console.log(date); // var date = Date.now(); //HTML5扩展的 IE9+
console.log(date); // var date = new Date();
console.log(date.valueOf());//打印对象的原来的值,其实就是13位的数字 1505784077460

  获取日期时间的指定部分,同时和他们对应的还有相应的set方法

  /**
getTime() 返回毫秒数和valueOf()结果一样
getMilliseconds()
getSeconds() 返回0-59
getMinutes() 返回0-59
getHours() 返回0-23
getDay() 返回星期几 0周日 6周6
getDate() 返回当前月的第几天,当月的几号
getMonth() 返回月份,从0开始
getFullYear() 返回4位的年份 如 2016 */
var date = new Date();
console.log(date.getTime()); // 和valueOf的效果是一样的,用来获取13位的毫秒数字
console.log(date.getMilliseconds());
console.log(date.getSeconds());
console.log(date.getMinutes());
console.log(date.getHours());
console.log(date.getDay()); // 星期几 周 礼拜几
console.log(date.getDate()); // 当前月份的第几天 几号
console.log(date.getMonth()); //显示的是1,因为这里也是从0开始
console.log(date.getFullYear());

  熟悉这些API后,让我们封装一个常见的日期格式函数来练练手吧(非常常见的笔试题目哦,看到了就是赚到了)

  function getDate(date) {
var year = date.getFullYear();
var month = date.getMonth() + 1; // 月份是从0开始
var day = date.getDate();//获取的是当月的几号
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds(); month = month < 10 ? "0" + month : month;
day = day < 10 ? "0" + day : day;
hour = hour < 10 ? "0" + hour : hour;
min = min < 10 ? "0" + min : min;
sec = sec < 10 ? "0" + sec : sec;
var str = year + "-" + month + "-" + day + " " + hour + ":" + min + ":" + sec;
console.log(str);
}
var date = new Date();
getDate(date); // 把创建的date作为参数传进来

  最后再来看看一个关于日期时间的bug。万恶的IE一直是前端学习的噩梦,各种兼容,今天的主角依然是他。以往的兼容是由于IE的版本比价底的缘故,这也难怪,早期的他并没有想的那么全面。可是这个bug知道IE11都还有,我就不知道该说什么了,

可能某些人存在店大欺客的味道,就象ICBC(爱存不存)一样,你爱用不用。那我们就来看看是什么,以及怎么解决吧!

  在IE11之前(包括IE11,但是edge是可以识别的)都是不识别这种横杠模式的时间,如:new Date("1970-1-1 0:0:0"),一定要转化成斜杠才能识别new Date("1970/1/1 0:0:0"),因此在使用前必须通过正则去替换:replace(new RegExp("-","gm"),"/");,

顺带普及下string的replace方法。replace(regexp/substr,replacement)是字符串函数,第一个参数是要替换的字符或者正则模式匹配的字符串,第二个参数则是替换文本或生产替换文本的函数

  看完后,是不是对这些API思路更清晰了

Date日期时间相关的更多相关文章

  1. jdbc 日期时间相关的类型

    jdbc 日期时间相关的类型 1.sql.Date sql包中的日期类Date是util包中Date类的子类,实际上也是util.Date类的子集.它只处理年月日,而忽略小时和分秒,用以代表SQL的D ...

  2. T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst、语言版本影响!

    原文:T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst.语言版本影响! CSDN 的 Blog 太滥了!无时不刻地在坏! 开始抢救性搬家 ...

  3. Java_日期时间相关类

    目录 Date类(java.util.date) Calendar类(java.util.Calendar) SimpleDateFormat类(java.text.SimpleDateFormat) ...

  4. android内部培训视频_第三节(3)_常用控件(ViewPager、日期时间相关、ListView)

    第三节(2):常用控件之ViewPager.日期时间相关.ListView  一.ViewPager 实例:结合PagerAdapter滑动切换图片  二.日期时间相关:AnalogClock\Dig ...

  5. js中转换Date日期格式

    在javascript中直接输出Date得到的结果是这样的: function date(){ var date = new Date(); alert(date); } 结果是:Mon Jun 15 ...

  6. js动态获取当前系统时间+js字符串转换为date日期对象

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. JavaScript的内置对象(Date日期+string字符串)基础语法总结

    1.Date日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 1)定义一个时间对象 : var Udate=new Date(); //注意:使用关键字new,Date()的首 ...

  8. JS 中 原生方法 (三) --- Date 日期

    本文也说主要阐释了 Javascript 中的基础类型和 引用类型的自带方法,那么熟悉的同学又可以绕道了 总是绕道,真是羞耻悳boy 当然 本文阐述的主要类容 from MDN ( zh-cn ) D ...

  9. SpringMVC解决@ResponseBody返回Json的Date日期类型的转换问题

    在做项目的时候,发现后台把Date类型的属性以json字符串的形式返回,前台拿不到转换后的日期格式,始终响应回去的都是long类型时间戳. 查阅资料之后找到解决方法: 方法一(在springmvc的x ...

随机推荐

  1. Python3 写的远程批量修改文件内容的脚本

    一.说明: 1.利用Python的paramiko模块,调用远程的shell命令去修改相应文件. 2.有一个专用配置文件,列出服务器清单. 3.Python循环读取配置文件的服务器IP去连接它,并执行 ...

  2. SharePoint开发中怎样使用Visual Studio给你的Web Part加入图标

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u012025054/article/details/36051545 SharePoint开发中怎样 ...

  3. MySQL整数类型字段的长度总结

    MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4)). 该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.(类似使用LPAD函数效果) 在INT( ...

  4. HTTP请求模型

    HTTP请求模型 HTTP请求模型 一.连接至Web服务器一个客户端应用(如Web浏览器)打开到Web服务器的HTTP端口的一个套接字(缺省为80). 例如:http://www.myweb.com: ...

  5. Codeforces 662D International Olympiad【贪心】

    比赛的时候后缀长度在4位以内的时候分类讨论了一下,其实他们完全是一个套路的..并不需要讨论. 然后没有考虑前导0的情况,就wa了.. 题目链接: http://codeforces.com/probl ...

  6. LightOJ 1236 Pairs Forming LCM【整数分解】

    题目链接: http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1236 题意: 找与n公倍数为n的个数. 分析: ...

  7. 因为对 Docker 不熟悉建了 N 多个 Nginx

    因为对 Docker 不熟悉建了 N 多个 Nginx 一直不停的 docker run nginx 结果出现无数个 nginx. 然后最原来的 nginx 启动不了了. 使用 docker ps - ...

  8. util.date

    package com.sxt.utils.date1; import java.util.Date; /* * util.date */ public class TestDate { public ...

  9. et al.

    et al.   英 [ˌet ˈæl]   adv. <拉>以及其他人; [例句]Earlier research in conventional RCS modelling for d ...

  10. 网站的域名带www的和不带www的有什么区别呀

    国内用户习惯用www,不过默认的不带www的域名要好过带www的,带Www的是二级域名,不带的是顶级域名,默认的在搜索引擎中得权重会比较高 区别就在于一个带www一个不带www 其他都一样.www的域 ...