JS 的Date对象
原文 http://www.cnblogs.com/towerking/p/3220410.html
一、获取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。
这些都是很简单的方式,相关的一些操作在网络中也可以找的到,参考这个网站http://www.w3school.com.cn/js/jsref_obj_date.asp,可以获取更多的信息。
在这里我想说说我之前遇到的一些问题和现象。
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("<br />");
document.write(date1.toLocaleString()); // 输出结果:2013年8月27日 上午12:00:00
document.write("<br />"); var date2 = new Date('2013/7/27');
document.write(date2); // 输出结果:Sat Jul 27 2013 00:00:00 GMT+0800 (中国标准时间)
document.write("<br />");
document.write(date2.toLocaleString()); // 输出结果: 2013年7月27日 上午12:00:00

从上面的输出方式可以观察出,第一种方式创建的日期不对,比实际多一个月;而第二种方式是正确的。
二、获取当前时间的年月日
上面我们已经说过,我们可以直接通过new Date()获取当前日期,那我们来看看getDate(),getMonth(),getFullYear()几个函数获取到的值

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

发现获取的月份也是不对的,比实际的月份少了一个月,所以我就在想那么2013/1/1输出的时间可能是2012/12/1,于是我将本地的时间修改成了2013/1/1,运行程序
发现输出的结果是:
Year:2013
Month:0
Day: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)为什么会比实际大一个月的原因,虽然简单了点,但是我依然希望能够得到大家的支持与鼓励。
JS 的Date对象的更多相关文章
- JavaScript基础17——js的Date对象
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- JS的Date对象、Math、包装类
Date对象 在JS使用Date对象来表示时间 当前时间 var d = new Date(); 指定时间 格式:月/日/年 时:分:秒 var e = new Date("02/16/ ...
- js实现小时钟,js中Date对象的使用?
介绍一下js中Date对象的使用 dateObj = new Date() dateObj = new Date(dateValue) dateObj = new Date(year,month,da ...
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- JS中Date对象getYear()方法和getFullYear()方法区别
释义 JavaScript getFullYear() 方法 getFullYear() 方法可返回一个表示年份的 4 位数字. getYear() 语法 dateObject.getFullYear ...
- javascript得知 - js的Date对象函数
js的Date功能很强大.通常使用. 首先获得当前的日期: var CurDate = new Date(); var Year = CurDate.getFullYear(); //年份(四位 例: ...
- js日期date对象
js日期 日期对象的一些属性和方法 var date = new Date() date.toString() // "Tue Jan 29 2019 22:58:13 GMT+0800 ( ...
- js中Date()对象详解
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-???? ...
- js时间Date对象介绍及解决getTime转换为8点的问题
前言 在做时间转换的时候,发现用“2016-04-12”转出来的时间戳是 2016-04-12 08:00的时间点,而不是0点. new Date('2016-04-12').getTime(); ) ...
随机推荐
- UltraChart导出图片
? //一定要先绑定UltraChart,如果先绑定,然后有点击图片导出,没有用的 string fulPath="xxxx"; this.UltraChartTScore.Sav ...
- java设计模式--结构型模式--外观模式
外观模式 概述 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 适用性 1.当你要为一个复杂子系统提供一个简单接口时.子系统往往因为不 ...
- 微信开放JS-SDK,助力网页开发
From:http://mp.weixin.qq.com/s?__biz=MjM5NDAwMTA2MA==&mid=209208141&idx=1&sn=1f075212b34 ...
- 基于微信公众平台的开发(清华大学第二讲)_Alien的笔记
基于微信公众平台的开发(清华大学第二讲)_Alien的笔记 基于微信公众平台的开发(清华大学第二讲)
- Mysql数据库乱码与编码问题筛查
最近接连遇到数据库编码问题,让你的系统本来像个美丽的姑娘却忽然发现她不识字一样难受,其实很多时候是编码的问题,而mysql(特别地)设计编码的地方很多,在这里做一个筛查: 1 mysql编码 用下面的 ...
- errno的基本用法
error是一个包含在 perror()和strerrot()函数可以把errno的值转化为有意义的字符输出. #include <stdio.h> #include <stdlib ...
- Java里多个Map的性能比較(TreeMap、HashMap、ConcurrentSkipListMap)
问题 比較Java原生的 1. TreeMap 2. HashMap 3. ConcurrentSkipListMap 3种Map的效率. 结果 模拟150W以内海量数据的插入和查找,通过添加和 ...
- hadoop备战:一台x86计算机搭建hadoop的全分布式集群
主要的软硬件配置: x86台式机,window7 64位系统 vb虚拟机(x86的台式机至少是4G内存,才干开3台虚机) centos6.4操作系统 hadoop-1.1.2.tar.gz jdk- ...
- StackOverflow程序员推荐:每个程序员都应读的30本书
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本,你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西.” 很多程序员响应,他们在推荐时也写下自己的评语. ...
- SOLR使用手册之操作collection
一.Collections API 参考:https://cwiki.apache.org/confluence/display/solr/Collections+API 因为API比较多,我就不一 ...