JavaScript:IF时间> = 9:30然后

时间:2010-12-21 21:06:16

标签: javascript

我正在尝试写一个声明,说“如果时间是这个而且比那时少”。我可以使用get hours并获得分钟。但是,我在结合时间如9:30时遇到了问题。

实施例,

var now = new Date();
var hour = now.getHours();
var day = now.getDay();
var mintues = now.getMinutes();

if (day == 0 && hour >= 9 && hour <= 11 && mintues >= 30) { 
    document.write(now); 
}

只有当时间在9:30之间时间为10时才开始。只要时钟达到10,那么分钟就会<10分钟。 30,脚本中断。

关于如何更好地整合时间函数以使这一理论发挥作用的任何想法?

谢谢,

9 个答案:

答案 0 :(得分:6)

使用new Date().getTime()返回毫秒以便更容易比较。这样就无需检查小时,分钟,秒,毫秒Fiddle link

var d930 = new Date(2010, 12, 21, 9, 30, 0, 0), // today 9:30:00:000
    d931 = new Date(2010, 12, 21, 9, 31, 0, 0), // today 9:31:00:000
    t930 = d930.getTime(),
    t931 = d931.getTime();


console.log(t931 > t930);

通过这种方式,您的代码可以在9:30时间内进行静态检查。

var time930 = new Date(2010, 12, 21, 9, 30, 0, 0).getTime(),
    sunday = 0,
    now = new Date();

if(now.getDay() == sunday && now.getTime() >= time930){
    /* do stuff */
}

答案 1 :(得分:3)

你有一些拼写错误和基本的javascript错误 可能想要了解基础知识 W3Schools是我所知道的全部知识。 如果你修复它,它可以正常工作......

var now = new Date();
  var hour = now.getHours();
  var day = now.getDay();
  var minutes = now.getMinutes();
  if(day == 0 && hour == 9 && minutes < 30 && minutes > 10 || day == 0 && hour == 9)
      document.write('Time is between 9:10 and 9:30');

将if语句视为基本逻辑 如果那天是星期天(0)
而小时是9
并且分钟大于10 并且分钟数小于10 或者当天是星期日(0)
而小时是在9点之前。

答案 2 :(得分:2)

  var now = new Date();
  var closeTime = new Date();
  closeTime.setHours(9); closeTime.setMinutes(30);
  console.log(now, closeTime, now.getTime() >= closeTime.getTime());

关闭时间基于今天,然后我们只需将小时和分钟更改为9:30。

答案 3 :(得分:1)

if the hour is less than 9, true
or
if hour is 9 and minutes lt 30, true

所以看起来像

if ((hour < 9) || (hour == 9 && minutes < 30))

用词来弄清楚你的逻辑。符号只是捷径。

答案 4 :(得分:1)

一种方法是对日期对象进行直接比较。选择任意年,月,日,然后按如下方式合并您的时间:

var older = new Date("1980-01-01 12:15");
var newer = new Date("1980-01-01 12:30");

if (newer > older){
    alert("Newer time is newer");

} else {
    alert ("The time is not newer");

}

MDC documentation on the Date object将提供更多详细信息。最重要的是,如果你想比较时间,你实际上不需要调用对象上的任何方法,并且可以直接比较它们。 date()对象可以使用各种字符串为返回的实例分配新的时间,这些来自MDC文档:

today = new Date();
birthday = new Date("December 17, 1995 03:24:00");
birthday = new Date(1995,11,17);
birthday = new Date(1995,11,17,3,24,0);

正如您所看到的,它非常简单。不要复杂,并查看文档:)

虽然我们在这里,但是使用您的示例进行测试:

var base = new Date("1980-01-01 9:30");
var test = new Date("1980-01-01 9:30:01");

if (test >= base){
    alert("test time is newer or equal to base time");

} else {
    alert ("test time is older than 9.30");

}

答案 5 :(得分:1)

我今天有一个类似的问题要解决,我设置了一个小组件,它会在营业场所是否营业时返回。通过将分钟除以 100 然后将其添加到小时来获得时间。所以 8:30 表示为 8.3

let d = new Date()
let day = d.getDay()
let hours = d.getHours()
let minutes = d.getMinutes() / 100
let time = hours + minutes

if (day == 1) {
  if (time > 8.3 && time < 17.3) {
    setIsOpen(true)
  } else {
    setIsOpen(false)
  }
}

答案 6 :(得分:0)

试试这个:

var now = new Date(); 
var hour = now.getHours(); 
var mintues = now.getMinutes();

if(
        (hour*60 + mintues) > 570 && 
        hour <= 11
    )
{
    document.write(now); 
}

答案 7 :(得分:0)

我不太了解你的问题,但希望这会有所帮助。

c = new Date();
nhour  = c.getHours();
nmin   = c.getMinutes();

if(nmin <= 9) {
    nmin = "0" + nmin;
}
if(nhour <= 9) {
    nhour = "0" + nhour;
}

newtime = nhour + "" + nmin;

if(newtime <= 0930){
    alert("It is before 9:30am or earlier");
}

答案 8 :(得分:0)

我使用一个简单的技巧就使该解决方案变得简单易懂(因此易于调整)。

诀窍是将小时和分钟转换成数字。例如将09:30放入9.30

var now     = new Date();
var hour    = now.getHours();
var minutes = now.getMinutes();

// make the current time of day computable and readable at the same time
// 9:30 becomes 9.30
var timeOfDay = hour + (minutes / 100);

console.log('timeOfDay: ' + timeOfDay);

// For setting the time limits simply use the time with a dot instead of a colon
if( (9.30 <= timeOfDay) && (timeOfDay <= 11.30) ){
    console.log('Time is between 9:30 and 11:30');
}