在JavaScript中,Date对象用来表示日期和时间。

要获取系统当前时间,用:

var now = new Date();

now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)

now.getFullYear(); // 2015, 年份

now.getMonth(); // 5, 月份,注意月份范围是0~11,5表示六月

now.getDate(); // 24, 表示24号

now.getDay(); // 3, 表示星期三

now.getHours(); // 19, 24小时制

now.getMinutes(); // 49, 分钟

now.getSeconds(); // 22, 秒

now.getMilliseconds(); // 875, 毫秒数

now.getTime(); // 1435146562875, 以number形式表示的时间戳

注意,当前时间是浏览器从本机操作系统获取的时间,所以不一定准确,因为用户可以把当前时间设定为任何值。

如果要创建一个指定日期和时间的Date对象,可以用:

var d = new Date(2015, 5, 19, 20, 15, 30, 123);

d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)

你可能观察到了一个非常非常坑爹的地方,就是JavaScript的月份范围用整数表示是0~11,0表示一月,1表示二月……,所以要表示6月,我们传入的是5!这绝对是JavaScript的设计者当时脑抽了一下,但是现在要修复已经不可能了。

JavaScript的Date对象月份值从0开始,牢记0=1月,1=2月,2=3月,……,11=12月。

第二种创建一个指定日期和时间的方法是解析一个符合ISO 8601格式的字符串:

var d = Date.parse('2015-06-24T19:49:22.875+08:00');

d; // 1435146562875

但它返回的不是Date对象,而是一个时间戳。不过有时间戳就可以很容易地把它转换为一个Date:

var d = new Date(1435146562875);

d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)

d.getMonth(); // 5

使用Date.parse()时传入的字符串使用实际月份01~12,转换为Date对象后getMonth()获取的月份值为0~11。

时区

Date对象表示的时间总是按浏览器所在时区显示的,不过我们既可以显示本地时间,也可以显示调整后的UTC时间:

var d = new Date(1435146562875);

d.toLocaleString(); // '2015/6/24 下午7:49:22',本地时间(北京时区+8:00),显示的字符串与操作系统设定的格式有关

d.toUTCString(); // 'Wed, 24 Jun 2015 11:49:22 GMT',UTC时间,与本地时间相差8小时

那么在JavaScript中如何进行时区转换呢?实际上,只要我们传递的是一个number类型的时间戳,我们就不用关心时区转换。任何浏览器都可以把一个时间戳正确转换为本地时间。

时间戳是个什么东西?时间戳是一个自增的整数,它表示从1970年1月1日零时整的GMT时区开始的那一刻,到现在的毫秒数。假设浏览器所在电脑的时间是准确的,那么世界上无论哪个时区的电脑,它们此刻产生的时间戳数字都是一样的,所以,时间戳可以精确地表示一个时刻,并且与时区无关。

所以,我们只需要传递时间戳,或者把时间戳从数据库里读出来,再让JavaScript自动转换为当地时间就可以了。

要获取当前时间戳,可以用:

'use strict';

----

if (Date.now) {

console.log(Date.now()); // 老版本IE没有now()方法

} else {

console.log(new Date().getTime());

}

练习

小明为了和女友庆祝情人节,特意制作了网页,并提前预定了法式餐厅。小明打算用JavaScript给女友一个惊喜留言:

'use strict';

----

var today = new Date();

if (today.getMonth() === 2 && today.getDate() === 14) {

alert('亲爱的,我预定了晚餐,晚上6点在餐厅见!');

}

结果女友并未出现。小明非常郁闷,请你帮忙分析他的JavaScript代码有何问题。

pythondatetime_Date相关推荐

最新文章

  1. 关于mouseenter、mouseover、mouseout、mouseleave的理解
  2. 构造一个日期类java_Java8 新日期时间类(1)
  3. C#线程的使用和测试
  4. node中封装MongoDB
  5. bulk insert
  6. 用数字计算机公式表白,爱情数学简单表白公式
  7. 自顶向下与自底向上编程思想的对比
  8. JS导出table数据到excel问题-Automation 服务器不能创建对象
  9. YOLOv5 6.0 解决不显示Gflops方法:
  10. boost电路公式详解
  11. 查看本地windows密码方法
  12. 电子商务网站设计中信息安全防御
  13. 【flutter】上架马甲包过审
  14. 文本比较算法--Needleman/Wunsch算法
  15. IDEA中执行scala程序报错Error:scalac: Error: scala/Function1 java.lang.NoClassDefoundError:Scala/Function1
  16. 塔菲尔曲线如何分析_Tafel曲线是做什么的
  17. HTML学生个人网站作业设计:电影设计——爱影评在线电影(11页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  18. 匿名管道和命名管道(代码剖析)
  19. 一文详解泊车感知的摄像头需求
  20. 学了代码之后,对于程序员黑客的区别,我的认识是......

热门文章

  1. PostGIS之路——几何对象编辑(二)
  2. nt6启动菜单自动修复工具_轻量级windows系统修复,清理工具——Dism++
  3. MATLAB字符转数据
  4. 产品经理专业知识50篇(一)-产品经理应该知道的一些产品术语
  5. 干货|训练神经网络时要知道的几个要点
  6. ajax后台怎么取mapp,后台管理实现
  7. ad 单点登录 java 访问权限_AD 单点登录以及windows认证详细说明
  8. 在linux下赋予000权限,【linux】对于文件权限的理解
  9. matlab导入txt生成曲面,求助:怎样将txt的数据导入到Matlab中并根据参数画出波形...
  10. java+jsp+网页制作,java+jsp+mysql网页制作总结(2)