熟用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 实时显示当前时间
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的更多相关文章
- JavaScript -- 时光流逝(五):js中的 Date 对象的方法
JavaScript -- 知识点回顾篇(五):js中的 Date 对象的方法 Date 对象: 用于处理日期和时间. 1. Date对象的方法 <script type="text/ ...
- js中的 Date对象 在 IOS 手机中的兼容性问题
项目中有个时间相关的需求,很自然的用到了 js 中的 new Date() 获取时间,浏览器使用模拟手机模式访问没有问题,但是真机测试时发现,ios系统的手机无法显示时间. 定位问题发现是 new D ...
- js中转换Date日期格式
在javascript中直接输出Date得到的结果是这样的: function date(){ var date = new Date(); alert(date); } 结果是:Mon Jun 15 ...
- JS中的Date对象
1.构造函数 Date 对象可以通过构造函数来生成,Date 的构造函数可以放入四种不同的参数 1.1.new Date() ,返回此时的本地日期时间的date对象 let d = new Date( ...
- 对js中的Date扩展,格式化日期
/** * 对Date的扩展,将 Date 转化为指定格式的String 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) * 可以用 1-2 个占位符 年 ...
- js中:Date.utc()方法与getTime()方法返回值不相等的原因
// Date.UTC() 方法接受的参数同日期构造函数接受最多参数时一样,返回从1970-1-1 00:00:00 UTC到指定日期的的毫秒数. var utcDate = Date.UTC(201 ...
- delphi 获取时间戳 如何得到 和 js 中 new Date().getTime();的 相同?
new Date().getTime(); //1533213439019 通过,启发 function DateTimeToUnix(const AValue: TDateTime): Int64 ...
- js中 new Date()使用说明
var myDate = new Date(); // myDate.getYear(); //获取当前年份(2位)(该方法获取年份,涉及到浏览器兼容问题,所以不推荐使用!) // myDate.ge ...
- JS中new Date()用法及获取服务器时间
1.获取服务器时间: var now = new Date($.ajax({async: false}).getResponseHeader("Date")); 2.new Dat ...
随机推荐
- SQL Server客户端登录名与数据库用户关联
数据库迁移之后,在新的SQL Server客户端工具设置关联时,往往会报错: 用户.组或角色 'XXX' 在当前数据库中已存在. 解决方法: 首先介绍一下sql server中“登录”与“用户”的区别 ...
- 误打误撞写了段能让电脑奔溃的JS代码,但是自己不知道为什么,高手看到可以解答下吗?
代码如下: <script> for(i=1;j=3*i;i++){ for(;j<=50;){ document.write(j+"<br>") } ...
- iOS常用公共方法
iOS常用公共方法 字数2917 阅读3070 评论45 喜欢236 1. 获取磁盘总空间大小 //磁盘总空间 + (CGFloat)diskOfAllSizeMBytes{ CGFloat si ...
- TCP/IP入门(3) --传输层
原文:http://blog.csdn.net/zjf280441589/article/category/1854365 传输层的主要功能 1)传输层为应用进程之间提供端到端的逻辑通信(网络层是为主 ...
- HDU Math Problems
1576 const int mod = 9973; n = a - a / mod * mod; a / b = ans; ans * b = a = a / mod * mod + n; n = ...
- 换行(\r)和回车(\n)
主要摘录自2篇blog: http://www.cnblogs.com/clarkchen/archive/2011/06/02/2068609.html http://www.360doc.com/ ...
- liunx 防火墙开放端口的设置
今天在liunx 服务器上遇到一个问题,tomcat服务启动后怎么也访问不到项目,找了好久的原因,终于发现原来是liunx服务防火墙限制服务端口的访问,也就不多说了,看下面解决方法. 1.查看防火墙的 ...
- C语言小练习四
题目要求:输入N个数,输出该数列中第k个最大者. 程序源码: #include <stdio.h> #include <string.h> void printResult(i ...
- android studio 华为手机看不到具体的错误日志
手机的开发人员选项打开了么,其中的 USB 调试打开了么?搞定他们并重新运行,是否能找到我们的日志?否,转到 2. 日志中是否有这样 could not disable core file gener ...
- nexus2.1.2的配置
最近在学习maven,逐渐接触到私服的搭建,也就着手学习使用nexus了,在http://www.sonatype.org/nexus/go网站上nexus最新版本的是,不过版本要同jvm的版本匹对, ...