我正在尝试写一个声明,说“如果时间是这个而且比那时少”。我可以使用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,脚本中断。
关于如何更好地整合时间函数以使这一理论发挥作用的任何想法?
谢谢,
答案 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');
}