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    实时显示当前时间

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

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

       function showTime(){
var time = new Date();
console.log(time.toString());
setTimeout(showTime,1000);
} showTime();

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

       function remainTimer(){
var now = new Date();
var year = now.getFullYear();
var total = new Date(year,11,31,23,59,59);
//这一年中还剩下的秒数
var remain = (total-now)/1000;
var day = Math.floor(remain/(60*60*24)),
hour = Math.floor(remain%(60*60*24)/(60*60)),
minute = Math.floor(remain%(60*60*24)%(60*60)/60),
second = Math.floor(remain%(60*60*24)%(60*60)%60);
var text = year+'年还剩'+day+'天'+hour+'小时'+minute+'分钟'+second+'秒';
var time = document.getElementById('timer');
time.innerHTML = text;
}
setInterval(remainTimer,1000);

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

 <!DOCTYPE html>
<html lang="zh">
<head>
<meta charset=utf-8>
<title>Date-Year</title>
</head>
<style>
</style>
<body>
<div id="timer"></div>
<script>
//一天中有这些毫秒
var msPerDay = 86400000;
//给一个毫秒数,看它是多少天
function Day(t){
return Math.floor(t/msPerDay);
}
console.log('946684800000毫秒是()天:'+Day(946684800000));
function TimeWithInDay(t){
return t%msPerDay;
}
console.log('946684800001毫秒多少天后余()秒:'+TimeWithInDay(946684800001));
//年份无非就分为闰年和不是闰年,闰年366天,不是闰年365天。
// 而闰年的特征就是,能被4整除且不能被100整除或者能被400整除。
function DaysInYear(y){
if(y%4 !== 0){
return 365;//不能被4整除,则365天
}else if(y%100 !== 0){
return 366;//能被4整除且不能被100整除,则366天,闰年
}else if(y%400 !== 0){
return 365;//不能被400整除,则365天
}else{
return 366;//能被400整除,则366天,闰年
}
}
console.log('2000年一共有()天:'+DaysInYear(2000));
//从1970年开始到y年,一共经过了多少天(我还没有确切的明白这里为什么要这样做)
function DayFromYear(y) {
return 365 * (y - 1970) +
Math.floor((y - 1969) / 4) -
Math.floor((y - 1901) / 100) +
Math.floor((y - 1601) / 400);
}
console.log('从1970到2000年经过了()天:'+DayFromYear(2000));
//从1970年开始到y年,一共经过了多少毫秒
function TimeFromYear(y){
return msPerDay * DayFromYear(y);
}
console.log('从1970年到2000年经过了()毫秒:'+TimeFromYear(2000))
//给一个时间t这是从1970年开始经过了多少年
function YearFromTime(t){
var y = 1970;
//TimeFromYear(y),逐渐获得从1970年开始一年内的毫秒数,两年内的毫秒数....(可以看t落在哪个范围内了)
//大神说这个不是完全的准确
while(t>TimeFromYear(y)){
y++;
}
return y;
}
console.log('946684800000毫秒是从1970年到()年经过的:'+YearFromTime(946684800000));
console.log('1412846287654毫秒是从1970年到()年经过的:'+YearFromTime(1412846287654));
//给一个毫秒数,看他从1970年经过了..年,现在是几几年,这个年份是不是闰年
function InLeapYear(t){
return (DaysInYear(YearFromTime(t))===366)?true:false;
}
console.log('从1970年经过946684800000毫秒后的这一年是不是闰年:'+InLeapYear(946684800000));
</script>
</body>
</html>

熟用js中的Date的更多相关文章

  1. JavaScript -- 时光流逝(五):js中的 Date 对象的方法

    JavaScript -- 知识点回顾篇(五):js中的 Date 对象的方法 Date 对象: 用于处理日期和时间. 1. Date对象的方法 <script type="text/ ...

  2. js中的 Date对象 在 IOS 手机中的兼容性问题

    项目中有个时间相关的需求,很自然的用到了 js 中的 new Date() 获取时间,浏览器使用模拟手机模式访问没有问题,但是真机测试时发现,ios系统的手机无法显示时间. 定位问题发现是 new D ...

  3. js中转换Date日期格式

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

  4. JS中的Date对象

    1.构造函数 Date 对象可以通过构造函数来生成,Date 的构造函数可以放入四种不同的参数 1.1.new Date() ,返回此时的本地日期时间的date对象 let d = new Date( ...

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

    /** * 对Date的扩展,将 Date 转化为指定格式的String 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) * 可以用 1-2 个占位符 年 ...

  6. js中:Date.utc()方法与getTime()方法返回值不相等的原因

    // Date.UTC() 方法接受的参数同日期构造函数接受最多参数时一样,返回从1970-1-1 00:00:00 UTC到指定日期的的毫秒数. var utcDate = Date.UTC(201 ...

  7. delphi 获取时间戳 如何得到 和 js 中 new Date().getTime();的 相同?

    new Date().getTime();  //1533213439019 通过,启发 function DateTimeToUnix(const AValue: TDateTime): Int64 ...

  8. js中 new Date()使用说明

    var myDate = new Date(); // myDate.getYear(); //获取当前年份(2位)(该方法获取年份,涉及到浏览器兼容问题,所以不推荐使用!) // myDate.ge ...

  9. JS中new Date()用法及获取服务器时间

    1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...

随机推荐

  1. SQL Server客户端登录名与数据库用户关联

    数据库迁移之后,在新的SQL Server客户端工具设置关联时,往往会报错: 用户.组或角色 'XXX' 在当前数据库中已存在. 解决方法: 首先介绍一下sql server中“登录”与“用户”的区别 ...

  2. 误打误撞写了段能让电脑奔溃的JS代码,但是自己不知道为什么,高手看到可以解答下吗?

    代码如下: <script> for(i=1;j=3*i;i++){ for(;j<=50;){ document.write(j+"<br>") } ...

  3. iOS常用公共方法

      iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...

  4. TCP/IP入门(3) --传输层

    原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...

  5. HDU Math Problems

    1576 const int mod = 9973; n = a - a / mod * mod; a / b = ans; ans * b = a = a / mod * mod + n; n = ...

  6. 换行(\r)和回车(\n)

    主要摘录自2篇blog: http://www.cnblogs.com/clarkchen/archive/2011/06/02/2068609.html http://www.360doc.com/ ...

  7. liunx 防火墙开放端口的设置

    今天在liunx 服务器上遇到一个问题,tomcat服务启动后怎么也访问不到项目,找了好久的原因,终于发现原来是liunx服务防火墙限制服务端口的访问,也就不多说了,看下面解决方法. 1.查看防火墙的 ...

  8. C语言小练习四

    题目要求:输入N个数,输出该数列中第k个最大者. 程序源码: #include <stdio.h> #include <string.h> void printResult(i ...

  9. android studio 华为手机看不到具体的错误日志

    手机的开发人员选项打开了么,其中的 USB 调试打开了么?搞定他们并重新运行,是否能找到我们的日志?否,转到 2. 日志中是否有这样 could not disable core file gener ...

  10. nexus2.1.2的配置

    最近在学习maven,逐渐接触到私服的搭建,也就着手学习使用nexus了,在http://www.sonatype.org/nexus/go网站上nexus最新版本的是,不过版本要同jvm的版本匹对, ...