博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中判断日期是否相等
阅读量:6582 次
发布时间:2019-06-24

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

问题

做一个节日提示网页,首先获得当前日期,然后与最近的节日比较,如果恰好是同一天,提示“XX节快乐!”否则,提示“离XX节还有X天”。判断是否恰好同一天的时候我用了类似如下代码:

var today=new Date();var valentine=new Date(today.getFullYear(),1,14);if(today==valentine){    alert("情人节快乐!");}else if{...}

调试时,我为了能测到恰好是情人节的情况,又特意把today改成情人节了:

var today=new Date(2015,1,14);

结果没有执行到alert部分,控制台监视以后发现,today==valentine部分,返回的是false,自然就跳过了。

解决

用如下方式都可判断两日期是否相等:

第一种:

if(date1.getTime()==date2.getTime()){...}

第二种:

if(date1-date2==0){...}

说明

1.为什么”==“判断返回false?

日期对象是引用类型,而非值类型。

引用类型与值类型的区别在于:

值类型的变量:值就保存在栈内存中,访问变量时操作的就是实际的数据值。
引用类型的变量:变量只是保存了一个引用或者说是指针,这个引用或指针指向一个堆内存中的位置,这个位置才是保存了真正的数据值。访问引用性变量时,先从栈中取得这个内存位置,然后找到数据值。

所以用“==”比较today和valentine时,比较的不是两个数据值,而是两个不同的引用,这两个引用分别指向两个不同位置的对象,所以返回false。

2.getTime()用法

表示时间距1970年1月1日午夜之间的毫秒数,返回一个整数值,所以可直接比较。

3.date1-date2

返回两个日期相差的毫秒数。

4.getMonth()需要注意的地方

从0开始,即0,1,2...对应的分别是一月,二月,三月........。

转载于:https://www.cnblogs.com/SheilaSun/p/4380855.html

你可能感兴趣的文章
生物医药领域科技成果专场圆满落幕
查看>>
C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)
查看>>
我的友情链接
查看>>
openGL画一个正5角星
查看>>
JDBC技术预研选型依据【转】
查看>>
我的友情链接
查看>>
celery周期性任务
查看>>
Cassandra – 理解关键概念和数据模型
查看>>
进阶PHP需要注意的一些点
查看>>
Java反射讲解-实例(1)
查看>>
Docker中安装oracle 11.2.0.4
查看>>
Uncompressing Linux... done, booting the kernel
查看>>
k8s-之无头服务初体验
查看>>
神码设备,实验配置案例(一)
查看>>
webgl学习笔记四
查看>>
【2012年给力作品】通用U盘装系统制作工具 V2.0 万能版 火热发布中……
查看>>
Spring Bean注册解析(二)
查看>>
python利用utf-8编码判断中文字符
查看>>
简单的jquery代码实现表单验证
查看>>
递归算法简单介绍
查看>>