熟用js中的Date

js中的Date类型是使用UTC(国际协调时间)自1970年1月1日午夜(零时)开始,经过的毫秒数来保存日期。

1. 创建日期对象  ---> 获得当前日期和时间  var now = new Date();

--->基于制定的日期和时间创建  var date = new Date(year,month,day,hour,minute,second);

需要注意的就是,Date.prototype中的方法都是基于UTC时间的,所以这些方法中month(0-11)、day(1-31)、星期几(0表示星期日,6表示星期六)、hour(0-23)、minute(0-59)、second(0-59)。

2.方法   Date.parse()、Date.UTC()----将日期字符串解析为毫秒数的方法;

Date.now()----返回调用这个方法时的日期和时间的毫秒数;

toDateString()/toTimeString()/toLocaleDateString()/toLocaleTimeString()/toUTCString()----将日期格式化为特定字符串的方法。

Date类型的方法(mdn):https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

找两个题目练练手:

Q.1    实时显示当前时间

1      function timer(){
2          var now = new Date();
3          var time = document.getElementById(‘timer‘);
4          var text = now.getFullYear()+‘年‘+(now.getMonth()+1)+‘月‘+now.getDate()+‘日‘+now.getHours()+‘时‘+now.getMinutes()+‘分‘+now.getSeconds()+‘秒‘;
5          time.innerHTML = text;
6        }
7        setInterval(timer,1000);

使用setTimeout()实现相同的计时效果(在执行时间上会有问题):

1       function showTime(){
2          var time = new Date();
3          console.log(time.toString());
4          setTimeout(showTime,1000);
5        }
6
7        showTime();

Q.2   实现XX年还剩多少天

 1       function remainTimer(){
 2          var now = new Date();
 3          var year = now.getFullYear();
 4          var total = new Date(year,11,31,23,59,59);
 5          //这一年中还剩下的秒数
 6          var remain = (total-now)/1000;
 7          var day = Math.floor(remain/(60*60*24)),
 8              hour = Math.floor(remain%(60*60*24)/(60*60)),
 9              minute = Math.floor(remain%(60*60*24)%(60*60)/60),
10              second = Math.floor(remain%(60*60*24)%(60*60)%60);
11           var text = year+‘年还剩‘+day+‘天‘+hour+‘小时‘+minute+‘分钟‘+second+‘秒‘;
12           var time = document.getElementById(‘timer‘);
13           time.innerHTML = text;
14        }
15        setInterval(remainTimer,1000);

之前看到微博上阿里的大神的分享《date in web》。学了点皮毛,自己写了下,笔记:

 1 <!DOCTYPE html>
 2 <html lang="zh">
 3 <head>
 4 <meta charset=utf-8>
 5 <title>Date-Year</title>
 6 </head>
 7 <style>
 8 </style>
 9 <body>
10     <div id="timer"></div>
11     <script>
12     //一天中有这些毫秒
13     var msPerDay = 86400000;
14     //给一个毫秒数,看它是多少天
15     function Day(t){
16       return Math.floor(t/msPerDay);
17     }
18     console.log(‘946684800000毫秒是()天:‘+Day(946684800000));
19     function TimeWithInDay(t){
20       return t%msPerDay;
21     }
22     console.log(‘946684800001毫秒多少天后余()秒:‘+TimeWithInDay(946684800001));
23     //年份无非就分为闰年和不是闰年,闰年366天,不是闰年365天。
24    // 而闰年的特征就是,能被4整除且不能被100整除或者能被400整除。
25     function DaysInYear(y){
26         if(y%4 !== 0){
27           return 365;//不能被4整除,则365天
28         }else if(y%100 !== 0){
29           return 366;//能被4整除且不能被100整除,则366天,闰年
30         }else if(y%400 !== 0){
31            return 365;//不能被400整除,则365天
32         }else{
33            return 366;//能被400整除,则366天,闰年
34         }
35       }
36     console.log(‘2000年一共有()天:‘+DaysInYear(2000));
37     //从1970年开始到y年,一共经过了多少天(我还没有确切的明白这里为什么要这样做)
38      function DayFromYear(y) {
39           return 365 * (y - 1970) +
40             Math.floor((y - 1969) / 4) -
41             Math.floor((y - 1901) / 100) +
42             Math.floor((y - 1601) / 400);
43         }
44      console.log(‘从1970到2000年经过了()天:‘+DayFromYear(2000));
45      //从1970年开始到y年,一共经过了多少毫秒
46       function TimeFromYear(y){
47          return msPerDay * DayFromYear(y);
48       }
49       console.log(‘从1970年到2000年经过了()毫秒:‘+TimeFromYear(2000))
50       //给一个时间t这是从1970年开始经过了多少年
51       function YearFromTime(t){
52          var y = 1970;
53          //TimeFromYear(y),逐渐获得从1970年开始一年内的毫秒数,两年内的毫秒数....(可以看t落在哪个范围内了)
54          //大神说这个不是完全的准确
55          while(t>TimeFromYear(y)){
56           y++;
57          }
58          return y;
59       }
60        console.log(‘946684800000毫秒是从1970年到()年经过的:‘+YearFromTime(946684800000));
61        console.log(‘1412846287654毫秒是从1970年到()年经过的:‘+YearFromTime(1412846287654));
62       //给一个毫秒数,看他从1970年经过了..年,现在是几几年,这个年份是不是闰年
63       function InLeapYear(t){
64         return (DaysInYear(YearFromTime(t))===366)?true:false;
65       }
66        console.log(‘从1970年经过946684800000毫秒后的这一年是不是闰年:‘+InLeapYear(946684800000));
67     </script>
68 </body>
69 </html>

时间: 2024-10-06 02:28:33

熟用js中的Date的相关文章

js中关于date()的扩展

做前端往往会碰到后台传过来的date数据不是需求所需要的样式,后台往往传timestamp类型的,传过来的值为“Mar 30, 2016 10:00:36 AM”格式的,可是页面需要显示“年-月-日”或者“年.月.日”或者“年-月-日 时:分:秒”,需求不同,展示效果不同. 所以,碰到这种情况,就需要我们前端每次在js中转换,除了一些前端框架自带的format方法,(比如说miniUI),我们也可自己对date进行扩展,下面是总结的date数据的扩展,亲测,看代码: /* 关于时间类型的扩展 *

js中转换Date日期格式

在javascript中直接输出Date得到的结果是这样的: function date(){ var date = new Date(); alert(date); } 结果是:Mon Jun 15 15:30:46 UTC+0800 2009 这可能不是我们所需要的,因此是需要转换下的,这里就学下我转换的几种方法,不妥之处请指教: 1.得到new Date()型中各个时间级别(年.月.日.时.分.秒)的数: function date(){ var date = new Date(); va

对js中的Date扩展,格式化日期

/** * 对Date的扩展,将 Date 转化为指定格式的String 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) * 可以用 1-2 个占位符 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) eg: (new * Date()).format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 (new * Date()).form

js中 new Date()使用说明

1 var myDate = new Date(); 2 // myDate.getYear(); //获取当前年份(2位) 3 // myDate.getFullYear(); //获取完整的年份(4位,1970-????) 4 // myDate.getMonth(); //获取当前月份(0-11,0代表1月) 5 // myDate.getDate(); //获取当前日(1-31) 6 // myDate.getDay(); //获取当前星期X(0-6,0代表星期天) 7 // myDat

JavaScript中的Date类型详解与moment简介

关于JavaScript中的Date类型,相信JSer们都不会陌生吧,但是也必然为那个复杂难记的各种转换函数所头疼,本文将分享一下我对JS中的Date类型的一些知识小总结,并把其中容易犯错的地方指出来,同时简介和推广moment.js这个js库,希望大家看完文章后以后在对Date类处理如鱼得水. 1 时间的唯一性与多样性 某一时刻在全世界任何地区应该是唯一的,时区的不同是为了让地球不同时区的人的中午十二点都是太阳正上当头,形成交流上没有那么多障碍.而这一标准就是大家熟知的格林威治标准时间(Gre

js中获取时间new date()的用法

js中获取时间new date()的用法 获取时间:   var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获取当前年份(2位) 2 myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 myDate.getMonth(); //获取当前月份(0-11,0代表1月) 4 myDate.getDate(); //获取当前日(1-31) 5 myDate.getDay();

js实现小时钟,js中Date对象的使用?

介绍一下js中Date对象的使用 dateObj = new Date() dateObj = new Date(dateValue) dateObj = new Date(year,month,date[,hours[,minutes[,seconds[,ms]]]]); 以下有一个小样例 <script type="text/javascript"> function setTime(){ //获得如今的时间 var now = new Date(); var year

javaScript系列:js中获取时间new Date()详细介绍

var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1970-????)myDate.getMonth(); //获取当前月份(0-11,0代表1月)myDate.getDate(); //获取当前日(1-31)myDate.getDay(); //获取当前星期X(0-6,0代表星期天) 何问起 hovertree.commyDate.getTime(); //获取当前时

Js中Date格式化为字符串

惭愧,混迹博客园2年了,还没写过什么.最近不太忙,就写一下Js中Date对象的字符串转换吧. 直接贴代码,欢迎各位拍砖,吐槽! /*格式化时间 *formatStr 格式,如:YY-MM-DD hh:mm:ss.Y-M-D h:m:s *只有一个M时,月份小于十时前面不追加零,D.h.m.s雷同 */Date.prototype.toStringFormat = function (formatStr) { if (formatStr == null || formatStr == '') re