我用Xpage编写了ServerSide JavaScript,如下所示,日期格式为"mm/dd/yyyy“
var date1:NotesDateTime=session.createDateTime("10/15/2013")
var date2:NotesDateTime=session.createDateTime("01/02/2014")
if(date1 <= date2)
{
return "Pass"
}
else
{
return "Fail"
}在这里,我应该得到“通行证”,但我会“失败”?
发布于 2013-10-16 04:30:26
使用timeDifference方法NotesDateTime来比较日期实例,而不是像<或>这样的标准运算符
if (date1.timeDifference(date2) < 0) {
return "Pass";
} else {
return "Fail";
}注意:上面的内容也可以使用conditional operator更简洁地表示
return (date1.timeDifference(date2) < 0) ? "Pass" : "Fail";timeDifference方法本质上“减去”调用该方法的date实例中传递给它的日期,并以秒为单位返回差值。
因此,在上面的示例中,如果date2晚于date1,则该方法将返回一个负数;如果date1晚于date2,则结果为正数;如果两个对象表示的日期和时间完全相同,则结果为0。
奖金信息:
标准比较运算符不能用于识别这两个变量的值之间的数量差异的原因是,变量是指向“对象”的指针,而不是“原始”值。
JavaScript是一种几乎完全没有类型的语言,所以等式运算符(==)通常只有在用于比较字符串、数字和布尔值以及比较运算符(<、>等)时才是可靠的。通常只有在比较数字时才能可靠。几乎所有其他东西都可以被认为是一个对象(包括数组)。
带有基本数值的变量只是指向当前值的指针。因此,下面的表达式将返回true
1 <= 2但是,下面的表达式永远不可能是真的:
date1 <= date2在某个时候,...unless显式地将两个变量设置为指向同一个对象的指针:
date1 = date2因为这些是对象,所以<=不比较它们表示的值。=检查它们是否是指向完全相同内存对象的指针。除非操作数是原语,否则操作符的<一半是没有意义的,因为两个对象变量永远不能“小于”彼此,它们只能是指向同一个对象的指针或指向不同对象的指针;前者使它们“相等”,后者则不会,即使两个变量标识的两个对象存储相同的内部值。它们是单独的内存分配,因此JavaScript不认为它们是相等的,不能使用标准比较运算符来比较它们的值。
https://stackoverflow.com/questions/19394796
复制相似问题