熟用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 ...
随机推荐
- 如何查看apache,php,mysql的编译参数
查看nginx编译参数:/usr/local/nginx/sbin/nginx -V 查看apache编译参数:cat /usr/local/apache2/build/config.nice 查看m ...
- Powerdesigner 设置唯一约束
- Windows系统下部署安装一个/多个Tomcat8
首先从http://tomcat.apache.org/上下载Tomcat8.0压缩版的,解压到指定路径后即可. 第一:在Windows系统中安装部署单个Tomcat 对于这种情况, ...
- Maven入门示例(3):自动部署至外部Tomcat
Maven入门示例(3):自动部署至外部Tomcat 博客分类: maven 2012原创 Maven入门示例(3):自动部署至外部Tomcat 上一篇,介绍了如何创建Maven项目以及如何在内 ...
- MongoDB基本命令用
成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显 ...
- css中图片等比例缩放
li img{ display: inline-block; max-height: 60px; max-width: 60px; vertical-align: middle; }
- MySQL数据库sql语句的一些简单优化
1.查询条件的先后顺序 有多个查询条件时,要把效率高能更精确筛选记录的条件放在后边.因为MySQL解析sql语句是从后往前的(不知是否准确). 例: select a.*,b.* from UsrIn ...
- String的方法运用
public class StringUse { public static void main(String[] args) { int count = 0; String s=new String ...
- ES 2.4 bigdesk 安装失败解决方案.
把zip包下载下来 https://github.com/lukas-vlcek/bigdesk/tree/master 在plugin中自己建一个bigdesk 文件夹 在bigdesk下建一个_s ...
- configure: error: *** libpopt not found 解决方法
ubuntu (deb) $ apt-cache search popt|headlibpopt-dev - lib for parsing cmdline parameters - developm ...