熟用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 ...
随机推荐
- bootstrap-datepicker使用
$('.date').datepicker({ language: 'zh-CN', --指定格式 format: 'yyyy-mm', --格式要求 autoclose: true, --选择后是否 ...
- 保护眼睛,把常用软件的背景设置成Dark
每天长时间使用电脑,很多软件的背景都是白色,久看对眼睛不好. 1)Google Chrome,WebDev/看新闻/看邮件/写博客.使用Stylish插件和Global Dark Style,效果相当 ...
- java中用spring实现数组类型输出
java 中的几个数组类型 1.Department类 package com.yy.collection; import java.util.List; import java.util.Map; ...
- 结合阿里云服务器,设置家中jetson tk1随时远程登陆
前提条件: 1.路由配置dmz主机为tk1的ip ,设置路由器中ssh 端口22的访问权限 2.有一台远程服务器,服务器安装了php可以运行php文件(我使用的是阿里云) 家中tk1配置: 脚本pyt ...
- (转)__cdecl __fastcall与 __stdcall
原帖 http://blog.sina.com.cn/s/blog_6b7c56870100l8rf.html __cdecl __fastcall与 __stdcall 调用约定: __c ...
- 开博了,hello world
hello world hello world hello world hello world hello world hello world he ...
- easyui datagrid中关联combox
datagrid中列上关联combobox{ field: 'SysCode', title: '系统代码', width: 150, align: 'left', editor: { type: ' ...
- isee - 创建项目 - 1
1.在本地web目录下创建一个新项目 D:\web> composer create-project laravel/laravel isee --prefer-dist 2.在vhosts.c ...
- Django-简单项目创建
在磁盘中找到需要存放项目代驾的目录,进入该目录(本机为: /Downloads/All) 输入Django创建项目命令:django-admin startproject mysite,此时在目录下会 ...
- [UCSD白板题] Maximize the Value of an Arithmetic Expression
Problem Introduction In the problem, your goal is to add parentheses to a given arithmetic expressio ...