`
Ethan.Lu
  • 浏览: 6374 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

javascript Date类使用随记

阅读更多

最近在用js做日历,用到了Date类的setDate,setMonth和setFullYear。例如当前日期是2016-10-31,而我需要创建2016-11-01这个日期,我习惯这样做:

var target = new Date();   // 当前日期2016-10-31
target.setFullYear(2016);
target.setMonth(10);   // 11月
target.setDate(1);

 最终target的日期却显示2016-12-01。

debug后发现,问题存在于当前日期和setMonth这步。当前日期有31日,但是当setMonth后,target的月份变为11月,而11月最多只有30日,setMonth就相当于11月30日+1天=12月1日。

原本使用的解决方法就是从小到大设置,先setDate,然后setMonth,最后setYear。因为考虑到闰年2月天数变化。

var target = new Date();   // 当前日期2016-10-31
target.setDate(1);
target.setMonth(10);   // 11月
target.setFullYear(2016);

 但是这种方法也存在问题,如果当前日期是2016-11-11,要创建2016-12-31,按照上面这种方法,在setDate时target就会变为2016-12-01,最终target也只会是2016-12-01。

var target = new Date();   // 当前日期2016-11-11
target.setDate(31);
target.setMonth(11);   // 12月
target.setFullYear(2016);

最终解决方法是也是从小到大,不过setDate首先设置为1,然后setMonth和setFullYear,最后再设置目标日

var target = new Date();   // 当前日期2016-11-11
target.setDate(1);   // 设置为每月首日
target.setMonth(11);   // 12月
target.setFullYear(2016);
target.setDate(31);   // 设置为目标日
分享到:
评论
1 楼 Cobain_LI 2016-11-09  
如果没有其它特殊需求,建议可以这样做,直接给new Date传入时间参数,比如2016年11月1日,new Date(2016,10,1);这样写的话一般很少出问题

相关推荐

    EHCache的使用随记

    **EHCache的使用随记** EHCache是一款广泛应用于Java环境中的高效、易用且功能丰富的内存缓存系统。它能够显著提升应用性能,通过将常用数据存储在内存中,避免了反复从数据库读取,降低了I/O延迟。本文将探讨...

    NativeJS随记 - 浅析JavaScript Events

    标题中的“NativeJS随记 - 浅析JavaScript Events”表明这篇博客主要讨论的是JavaScript中的事件处理机制。JavaScript事件是Web开发中的重要组成部分,它允许我们响应用户的交互或浏览器的内部变化。在这里,我们将...

    一些有关哈希函数的随记

    这篇随记将探讨哈希函数的基本概念、性质以及在实际应用中的重要性。 哈希函数,也称为散列函数,是一种特殊的算法,它将任意长度的输入(也称为预映射或消息)转化为固定长度的输出,这个输出通常被称为哈希值或...

    c++随记.docx

    ### C++ 随记知识点总结 #### 一、内存管理与 new/delete 操作符 在 C++ 中,`new` 和 `delete` 是用于动态内存分配的关键字。`new` 用于在堆区分配内存,`delete` 用于释放之前通过 `new` 分配的内存。使用 `new`...

    初学VB.NET使用心得随记

    为了实现这些功能,我们需要`OleDbCommandBuilder`类。在代码中,我们看到`OleDbCommandBuilder`被用来为`adapter1`自动生成这些语句: ```vb.net Dim CB_adapter1 As System.Data.OleDb.OleDbCommandBuilder = New...

    随记_电气_

    【标题】:“随记_电气_”提示我们这是一份关于电气工程领域的个人笔记或学习心得,可能包含了一些作者在学习或实践中积累的电气知识。 【描述】:“电气相关的知识,随手写的,不知道行不行11111”表明这份文档...

    随记统一响应结果和全局异常类

    个人练习使用idea编写的项目后,总结的东西

    互联网公司实习日记随记参考.pdf

    互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf互联网公司实习日记随记参考.pdf

    linux net 管理随记

    linux net 管理随记,留着个人备忘

    git随记 git

    git随记 git

    随记:flex发送XML到servlet

    标题“随记:flex发送XML到servlet”指的是在Flex应用程序中向Java Servlet发送XML数据的过程,这通常涉及到客户端与服务器端的交互。Flex是一种基于Adobe AIR或Flash Player运行时的开发框架,常用于创建富互联网...

    面试随记???随时更新

    面试随记???随时更新

    随记app,微博与博客整合

    随记App是一款集成微博与博客功能的毕业设计项目,旨在为用户提供一个统一的平台来管理和分享他们的日常思考和生活点滴。这个项目分为客户端和服务端两部分,分别实现了用户交互界面和后台数据处理。 在Android...

    重点小学生寒假记随记大全.doc

    重点小学生寒假记随记大全.doc

    微信小程序小手随记个人记账软件系统

    它有自己的框架和语言WXML(Weixin Markup Language)和WXSS(Weixin Style Sheets),以及JavaScript处理业务逻辑。开发者可以利用这些工具创建交互式的用户界面。 - **UI设计**:前台小程序的界面设计遵循微信小...

    公司法务实习日记随记三篇.pdf

    公司法务实习日记随记三篇.pdf

    会计专业毕业实习日记随记篇.pdf

    会计专业毕业实习日记随记篇.pdf

    重点小学生母亲节日记随记大全.doc

    重点小学生母亲节日记随记大全.doc

    JSP PDF打印 随记 复杂模板设计

    本篇随记主要探讨的是如何在JSP环境中进行PDF打印,并涉及复杂的模板设计。PDF(Portable Document Format)是一种通用的文件格式,常用于生成保持原始文档格式不变的静态文档,适用于打印和共享。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics