Javascript日期时间问题
我有一个将startdateJavascript日期时间问题,javascript,datetime,utc,Javascript,Datetime,Utc,我有一个将startdatetoutString和endDatetoutString存储在表中的代码。 当我调试控制台中的代码时,javascript显示出一些奇怪的行为 控制台中的输出 var startdate = new Date($("#smdatestart").val()).toUTCString(); var enddate = new Date($("#smdateend").val()).toUTCString(); var now = new Date(); var
toutString
和endDatetoutString
存储在表中的代码。
当我调试控制台中的代码时,javascript显示出一些奇怪的行为
控制台中的输出
var startdate = new Date($("#smdatestart").val()).toUTCString();
var enddate = new Date($("#smdateend").val()).toUTCString();
var now = new Date();
var currUTCDate = now.toUTCString();//current datetime
startdate //starting date
"Mon, 02 Dec 2013 07:30:00 GMT" //in UTC
currUTCDate // current date
"Mon, 02 Dec 2013 07:15:16 GMT" //in UTC
enddate // ending date
"Sun, 01 Dec 2013 18:30:00 GMT" //in UTC
currUTCDate > enddate //should be true but showing false
false
startdate > enddate //should be true but showing false
false
startdate > currUTCDate // this output is correct
true
我建议您首先以日期格式比较日期。如果条件满足,则将数据转换为utcstring,并根据需要进行存储。使用==或!=或>或<如果两个表达式的类型不同,它将尝试将它们转换为字符串、数字或布尔值等
使用下面的代码进行比较
if ( Date.parse ( currentdate) > Date.parse ( enddate) ) {
// your code
}
任何涉及'='
的内容都应使用'+'
前缀。然后将比较日期毫秒值
+startdate <= +currUTCDate ; => true
+startdate >= +currUTCDate ; => true
+startdate === +currUTCDate ; => true
+起始日期为真
+起始日期>=+当前日期;=>真的
+起始日期===+当前日期;=>真的
值是实际的Date
对象还是字符串?我编辑了我的问题。($(“#smdateend”).val()中的值是多少实际上,这些字符串的格式不具有可比性。它们从工作日开始,即字符串的顺序由工作日的顺序决定。可比格式根本不包含工作日,而希望类似于YYYY-MM-DD HH:MM:SS
,而不是字符串。startdate中的值de>、enddate
、currUTCDate
是字符串,而不是日期对象。您实际上是按字母顺序比较日期的字符串表示形式,而不是比较实际日期。
+startdate <= +currUTCDate ; => true
+startdate >= +currUTCDate ; => true
+startdate === +currUTCDate ; => true