首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Javascript比较日期失败

Javascript比较日期失败
EN

Stack Overflow用户
提问于 2015-01-31 10:08:42
回答 2查看 62关注 0票数 0

我正在尝试创建一个系统,打开和关闭轮在某些日期和时间,供用户玩。问题是javascript并不精确,有时它会在正确的时间做出更改,然后在一分钟后才更改。

也许问题是因为我在UTC中获取原始日期,并在将此日期与实际日期和时间进行比较之前进行转换…

我试着用>=来比较,只是<,使用.getTime(),但问题是一样的,javascript不会检测时间相等的时候,比较只在一分钟后生效,当一个日期小于或大于另一个日期时。

这是最后一段代码:

代码语言:javascript
代码运行次数:0
运行
复制
round_ended = new Date(round.ended + 'Z');
var date = new Date();

if (date.getTime() >= round_ended.getTime()) {
	round.phase = "closed";
}

正如我所说的,我已经尝试了其他类似的变体,但都没有成功:

代码语言:javascript
代码运行次数:0
运行
复制
round_ended = new Date(round.ended + 'Z');
var date = new Date();

if (!(date < round_ended)) {
	round.phase = "closed";
}

有人能帮上忙吗?

EN

回答 2

Stack Overflow用户

发布于 2015-01-31 10:21:35

如果您比较日期ISO字符串。

代码语言:javascript
代码运行次数:0
运行
复制
if (!(date.toISOString() < round_ended.toISOString())) {
    round.phase = "closed";
}

ISO格式是固定的:YYYY-MM-DDTHH:mm:ss.sssZ

票数 0
EN

Stack Overflow用户

发布于 2015-01-31 10:56:05

我仍然没有确切的问题,但我猜是毫秒。因此,我找到了一个基于这个猜测的解决方案。

我比较两个值的差异,并检查它是否小于1000:

代码语言:javascript
代码运行次数:0
运行
复制
var time = round_ended - date;

if (time < 1000) {
  round.phase = "closed";
}

现在可以正常工作了。

谢谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28247428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档