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. Asp.net Mvc 身份验证、异常处理、权限验证(拦截器)实现代码

    本问主要介绍asp.net的身份验证机制及asp.net MVC拦截器在项目中的运用.现在让我们来模拟一个简单的流程:用户登录>权限验证>异常处理 1.用户登录 验证用户是否登录成功步骤直 ...

  2. [ MySql学习心得 ] --Two

    五.MySql 中常用子句 1.where子句 我们都知道在查询数据时,未必会查整个表中的数据,当有条件查询时,就会用到where子句.其结构: select * from  [表名]  where ...

  3. RestController 和Controller的区别

    restful风格,restcontroller与controller 初步接触springmvc的时候,被要求使用restful风格,彼时一头雾水,不懂何谓restful,参阅了很多资料,慢慢的接触 ...

  4. 查找原始MySQL死锁ID

    转载地址:http://yueliangdao0608.blog.51cto.com/397025/1180917 如果遇到死锁了,怎么解决呢?找到原始的锁ID,然后KILL掉一直持有的那个线程就可以 ...

  5. springboot maven install 找不到符号

    好多朋友在网上找maven install 找不到符号,我今天也遇到了同样的问题,我项目结构如下: 在multicreate-web这个项目引用了multicreate-service的jar包,在i ...

  6. (转)java中的进程与线程

    (转自地址http://www.ibm.com/developerworks/cn/java/j-lo-processthread/) Java 进程的建立方法 在 JDK 中,与进程有直接关系的类为 ...

  7. 通过统计用户DNS解析记录,实现监控用户上网行为

    上次通过扫描抓包分析TTL的方式检测公司网络开放的端口,发现没有开放53端口(DNS),也就是在公司内部的主机只能用服务器自动分配的DNS,并且发现这是台内部服务器.今天发现bing上不去,检测后发现 ...

  8. 解决Ubuntu下Chrome浏览器网页中文字体混乱

    在Ubuntu下使用Chrome浏览器时碰到了网页中文字体混乱的现象: 黑体和楷体混杂,看起来非常不美观. 这是由于许多网页并没有指定字体,然后浏览器将调用系统默认字体配置. 首先,安装文泉驿字体: ...

  9. Python 学习---------Day6

    18章 模块:宏伟蓝图 import 使客户端(导入者)以一个整体获取一个模块 from 允许客户端从一个模块文件中获取特定的变量名 reload 在不中止Python程序的情况下,提供了一种重新载入 ...

  10. berkeley db中 dirty read的实现

    dirty reader怎样 不被writor block住? 如数据库支持dirty read, 则 所有打开的dbhandle都配置 DB_READ_UNCOMMITTED; 在线程拿到 writ ...