JavaScript时间问题

JavaScript时间问题,javascript,jquery,time,Javascript,Jquery,Time,我不熟悉JavaScript,但需要运行一个检查以确保它是日光。我正在使用雅虎的天气API来绘制日出和日落。我只是有点困惑,究竟是什么最好的方法可以将结果与当前时间进行比较 我很困惑,因为它返回的时间像日落:“9:01 pm”。因为有一个下午,它是文本。我想不出一个好办法来和现在的时间比较。。。RegExp,然后可能转换为整数 什么是最好的方法,为什么(对不起,我正在努力学习) 提前感谢您提供的帮助。这将适用于类似的情况,但您可能需要更改计时以适应特定的气候: function getN

我不熟悉JavaScript,但需要运行一个检查以确保它是日光。我正在使用雅虎的天气API来绘制日出和日落。我只是有点困惑,究竟是什么最好的方法可以将结果与当前时间进行比较

我很困惑,因为它返回的时间像日落:“9:01 pm”。因为有一个下午,它是文本。我想不出一个好办法来和现在的时间比较。。。RegExp,然后可能转换为整数

什么是最好的方法,为什么(对不起,我正在努力学习)


提前感谢您提供的帮助。

这将适用于类似的情况,但您可能需要更改计时以适应特定的气候:

    function getNow() {
    var now = new Date

    if (now.getHours() < 5)         { return "Could be still dark";}
    else if (now.getHours() < 9)    {return "Definitely day time";}
    else if (now.getHours() < 17)   { return "Definitely day time"; }
    else                            {return "It gets dark now";}
}

alert(getNow());
函数getNow(){ var now=新日期 如果(now.getHours()<5){return“可能仍然很暗”;} else如果(now.getHours()<9){返回“肯定是白天”;} else如果(now.getHours()<17){返回“肯定是白天”;} 否则{返回“天黑了”;} } 警报(getNow());
一种快速方法是将一天中的当前时间和从雅虎返回的时间都转换为“从一天开始算起的分钟数”

例如,如果Yahoo给你的时间是9:01 pm,那么使用pm将时间转换为21:01。就是

21*60 + 1 = 1260 + 1 = 1261 minutes since the beginning of the day
在日出和日落时都这样做。然后使用获取当前时间

new Date()
做同样的事情

然后做整数比较


希望这能有所帮助。

这听起来像是一个很好的例子,可以用来对从服务返回的数据进行正则表达式验证

类似于
(\d{1,2}):(\d{2})\s(AM | PM)
的内容将为您提供3个捕获组

1:小时(1或2位)
2:分钟(2位)
3:字符串“AM”或“PM”

然后,您可以使用它们将实际时间解析为整数小时和分钟,以与当前时间进行比较。

使用yahoo api中的信息创建一个新的日期(),然后将Date.now()与sunsetDate.getTime()和sunsedate.getTime()进行比较

以mm/dd/yyyy格式将今天的日期(时间为“9:01 pm”)传递给日期构造函数将为您提供一个有效日期

var today = new Date();
today = [today.getMonth()+1, today.getDate(), today.getFullYear()].join('/');

var yahooSunrise = '5:45 am';
var yahooSunset = '9:01 pm';

var sunrise = new Date(today + ' ' + yahooSunrise).getTime();
var sunset = new Date(today + ' ' + yahooSunset).getTime();
var now = Date.now();

var isDaylight = (now > sunrise && now < sunset);
var today=新日期();
today=[today.getMonth()+1,today.getDate(),today.getFullYear()].join('/');
var Yahoo日出='5:45 am';
var Yahoo日落='9:01 pm';
var sunrise=新日期(今天+“”+yahoo日出).getTime();
var sunset=新日期(今天+“”+yahoostence.getTime();
var now=Date.now();
var isDaylight=(现在>日出&现在<日落);

谢谢,在大多数情况下,这对我来说非常容易理解(并实施)。然而,出于学习目的,我在理解Date.now()发生了什么方面有点困难。它是一个预定义的函数,返回的毫秒数与getTime()类似吗?是。调用
new Date().getTime()
会得到相同的结果,即从1970年1月1日00:00:00起的毫秒数。我认为,与实例化一个新实例相比,在日期函数之外调用
now()
方法稍微更有效一些。