博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS 的Date对象
阅读量:5265 次
发布时间:2019-06-14

本文共 2080 字,大约阅读时间需要 6 分钟。

原文

一、获取Date对象

      在JS中我们可以通过下面一段代码获取本地时间

var currentDate = new Date();alert("currentDate:" + currentDate);

      这样我们可以获取到当前时间,其输出信息如下:Sat Jul 27 2013 22:04:17 GMT+0800 (中国标准时间);

如果不想已这种形式出现,可以转化为本地时间,使用方法toLocaleString即可,其输出信息是:2013年7月27日 下午10:07:06。

这些都是很简单的方式,相关的一些操作在网络中也可以找的到,参考这个网站,可以获取更多的信息。

在这里我想说说我之前遇到的一些问题和现象。

JS中我们有两种方式可以创建Date对象,一个是通过数字参数new Date(yyyy,MM,dd),一个是通过字符串参数new Date('yyyy/MM/dd');其中yyyy代表的是年份,MM是月份,dd代表的是天。

      例如我们想创建2013/7/27这个日期对象,很容易想到的是我们会使用下面的两种方式中的一种去创建对象

// 第一种方式var date1 = new Date(2013, 7, 27);// 第二种方式var date2 = new Date('2013/7/27');

      问题是这两者输出来的日期信息是不同的,其中一个是准确的,还有一个就是不准确的了,如下我们可以看到结果

var date1 = new Date(2013, 7, 27);document.write(date1);     // 输出结果:Tue Aug 27 2013 00:00:00 GMT+0800 (中国标准时间)document.write("
");document.write(date1.toLocaleString()); // 输出结果:2013年8月27日 上午12:00:00document.write("
");var date2 = new Date('2013/7/27');document.write(date2); // 输出结果:Sat Jul 27 2013 00:00:00 GMT+0800 (中国标准时间)document.write("
"); document.write(date2.toLocaleString()); // 输出结果: 2013年7月27日 上午12:00:00

      从上面的输出方式可以观察出,第一种方式创建的日期不对,比实际多一个月;而第二种方式是正确的。

二、获取当前时间的年月日

     上面我们已经说过,我们可以直接通过new Date()获取当前日期,那我们来看看getDate(),getMonth(),getFullYear()几个函数获取到的值

var currentDate = new Date();document.write("Year:" + currentDate.getFullYear() + "
");document.write("Month:" + currentDate.getMonth() + "
");document.write("Day:" + currentDate.getDate() + "
");/**下面是输出结果:*Year:2013*Month:6*Day:27*/

      发现获取的月份也是不对的,比实际的月份少了一个月,所以我就在想那么2013/1/1输出的时间可能是2012/12/1,于是我将本地的时间修改成了2013/1/1,运行程序

      发现输出的结果是:

Year:2013Month:0Day:1

      PS:开始我还没有理解为什么这样,通过实验可以发现一个问题,即JS中对于月份的控制很有可能就是从0开始的,然后逐渐递增,那么0表示1月,11则表示12月,这样上面的一下现象就可以解释的清楚了。

三、将日期格式2013-7-27转化为2013/7/27

      在项目开发过程中,我们的日期控件格式很有可能是yyyy-MM-dd,而转化为JS的日期,这种格式是不支持的,而只支持yyyy/MM/dd的格式,这个时候我们就需要将格式进行一下转换,用下面两行代码,能够轻松搞定

var sendDate = "2013-7-27"; // 这个是从前台控件获取的值var jsSendDate = new Date(Date.parse(sendDate.replace(/-/g, "/")));

      以上几点是我在做项目的时候遇到的,起初还不是很明白为什么或出现上面几种情况,通过写这篇博文,我更加懂得了new Date(y,M,d)为什么会比实际大一个月的原因,虽然简单了点,但是我依然希望能够得到大家的支持与鼓励。

 

posted on
2013-07-28 10:59 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/lonelyxmas/p/3220879.html

你可能感兴趣的文章
bzoj3224 splay板子
查看>>
程序存储问题
查看>>
Mac版OBS设置详解
查看>>
优雅地书写回调——Promise
查看>>
android主流开源库
查看>>
AX 2009 Grid控件下多选行
查看>>
PHP的配置
查看>>
Struts框架----进度1
查看>>
Round B APAC Test 2017
查看>>
MySQL 字符编码问题详细解释
查看>>
Ubuntu下面安装eclipse for c++
查看>>
让IE浏览器支持CSS3圆角属性的方法
查看>>
巡风源码阅读与分析---nascan.py
查看>>
LiveBinding应用 dataBind 数据绑定
查看>>
Linux重定向: > 和 &> 区别
查看>>
nginx修改内核参数
查看>>
C 筛选法找素数
查看>>
TCP为什么需要3次握手与4次挥手(转载)
查看>>
IOC容器
查看>>
Windows 2003全面优化
查看>>