Date日期时间相关

  最近在封装一个关于时间函数的功能时,竟发现这些最基本的函数都有些生疏,于是进来来总结复习下,巩固自己记忆的同时,希望能帮助到需要的人

  首先了解下日期对象相关的方法

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月了。  //  日期格式的月份是从0开始的,即0-11位1-12月,
   var date = new Date(2016,10,1);
   console.log(date);  // Tue Nov 01 2016 00:00:00 GMT+0800 (中国标准时间)

// 2.看看这次传入的对象,估计很多人已然会觉得会打印11月,如果这样想你就错了,这里传入的是字符串,与上面的不一样,该方法会将字符串中的内容转化成相应的月份。要注意与上面的分开哦
  // 注意这种字符串形式的和上面从number类型的不一样,这里的月份就是对于的1-12
  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);  // 1505784006569

  var date = Date.now(); //HTML5扩展的  IE9+
  console.log(date);  // 1505784030664

  var date = new Date();
  console.log(date.valueOf());//打印对象的原来的值,其实就是13位的数字  1505784077460

  获取日期时间的指定部分

  /**
   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思路更清晰了

时间: 2024-08-08 06:15:14

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

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

原文:T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst.语言版本影响! CSDN 的 Blog 太滥了!无时不刻地在坏! 开始抢救性搬家 ... ... 到这里重建家园 /* T-SQL: 17 个与日期时间相关的自定义函数(UDF),周日作为周的最后一天,均不受 @@DateFirst.语言版本影响 都是从老文章里收集或提炼出来的! 提示: (@@Datefirst + datepart(weekday,@Date)) % 7 判

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

第三节(2):常用控件之ViewPager.日期时间相关.ListView  一.ViewPager 实例:结合PagerAdapter滑动切换图片  二.日期时间相关:AnalogClock\DigitalClock\DatePicker\TimerPicker\DatePickerDialog\TimePickerDialog 三.ListView 实例1:城市选择器 实例2:自定义列表项 百度网盘视频下载地址:http://pan.baidu.com/s/1c0ip6la android内

DATE日期&#183;&#183;MATH对象

1.Date日期 --Date 对象用于处理日期和时间. Date 对象的语法: var myDate=new Date() 2.Date 对象方法 eg: <style type="text/css"> #date{ width: 400px; height: 30px; } </style> <body> <input type="text" id="date"> <input type=

JS内置对象-String对象、Date日期对象、Array数组对象、Math对象

一.JavaScript中的所有事物都是对象:字符串.数组.数值.函数... 1.每个对象带有属性和方法 JavaScript允许自定义对象 2.自定义对象 a.定义并创建对象实例 b.使用函数来定义对象,然后创建新的对象实例 二.JS内置对象-String 1.string对象 string对象用于处理已有的字符串 字符串可以使用单引号或者双引号 2.indexOf( )  在字符串中查找字符串,如果匹配成功返回首字母所在的位置,否则返回-1 3.match() 匹配成功,返回匹配成功的数组,

js转换Date日期格式

有时候做项目会用到js的date日期格式,因为Date()返回的格式不是我们需要的, Date()返回格式: Thu Mar 19 2015 12:00:00 GMT+0800 (中国标准时间) 而我们则需要这样的格式: 2015-3-19 12:00:00 除非是在后台处理好时间格式,然后在页面直接显示. 那如何用js格式化date日期值呢? 1.js方法返回值:2015-03-19 var formatDate = function (date) { var y = date.getFull

php date()日期时间函数详解

PHP(PHP培训 php教程 )中date()日期时间函数详解,需要的朋友可以参考下. 1,年-月-日 echo date('Y-m-j'); 2007-02-6 echo date('y-n-j'); 07-2-6 大写Y表示年四位数字,而小写y表示年的两位数字; 小写m表示月份的数字(带前导),而小写n则表示不带前导的月份数字. echo date('Y-M-j'); 2007-Feb-6 echo date('Y-m-d'); 2007-02-06 大写M表示月份的3个缩写字符,而小写m

IE下Date 日期不兼容问题

ie9+, chrome firefox opera下 string到Date 使用 new  Date("2014-06-01"); 都是ok的. 但在ie7, ie8下 返回NaN 用下面方法解决: function parseISO8601(dateStringInRange) { var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/, date = new Date(NaN), month, parts = isoExp.exec(dateS

javascript-封装Date日期类

迁移时间:2017年5月27日18:43:02 Author:Marydon (一)对日期进行格式化 //自定义Date日期类的format()格式化方法 <script type="text/javascript"> // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(H).分(m).秒(s).季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字

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

1.Date日期对象可以储存任意一个日期,并且可以精确到毫秒数(1/1000 秒). 1)定义一个时间对象 : var Udate=new Date(); //注意:使用关键字new,Date()的首字母必须大写.使 Udate 成为日期对象,并且已有初始值:当前时间(当前电脑系统时间). 2)如果要自定义初始值,可以用以下两种方法: var d = new Date(2012, 10, 1); //2012年10月1日 var d = new Date('Oct 1, 2012'); //20