【发布时间】:2013-11-25 19:05:27
【问题描述】:
我有一个实时跟踪当地时间的功能。我正在使用new Date(); 对象来获取本地小时、分钟和秒。
我还希望用户输入一个函数必须在特定时间启动的地方。用户的输入是一个 string(我不希望用户使用 Date(); 对象,因为并非所有用户都可以编程)。例如:
输入用户:
var timeStart = "10:08:30";
直播时间转成字符串:
var sTime = todayHours + ':' + todayMinutes + ':' + todaySeconds;
当两者相等时:
if(sTime == timeStart )
{
//function when equals time
//This function has a timeout, so it will run infinite times
var timeOutId = setTimeout(function()
{
//call functie
}, 10000); //every 10 seconds as example
}
好吧,这工作就好了。我只能比较字符串是否相同。但是让它更复杂一点:我还希望用户给出一个结束时间,什么时候必须停止运行:
输入用户:
var timeEnd = "11:08:30";
直播时间转成字符串:
var sTime = todayHours + ':' + todayMinutes + ':' + todaySeconds;
当两者相等时:
if( sTime == timeEnd)
{
//function when equals time
//calls the timeout id and stops it
clearTimeout(timeOutId);
}
现在这工作正常!但是现在你知道我想要做什么我想知道我是否可以以某种方式做:
if(sTime >= timeStart && sTime <= timeEnd)
{
//timeout will only be set when it's in between the given time
setTimeout(function()
{
//call functie
}, 10000); //every 10 seconds as example
}
问题
我有一种方法可以将我的字符串时间(使用 2 位数字方法)转换为现有的日期时间,以便我可以按时进行比较?
我的时间只使用[小时、分钟和秒],这会导致问题,因为日期(年、月和日)没有定义。
我尝试使用 Momentjs,但它也拒绝仅使用小时、分钟和秒。或者我可能不知道如何做到这一点。
我想使用的方法似乎更容易,因为我不必定义何时取消timeOut。
感谢任何帮助!
Ps 我实际上只需要将字符串时间转换为 unix 时间戳
(当然也欢迎其他方法)。
【问题讨论】:
-
“我的时间只使用 [小时、分钟和秒],这会导致问题,因为没有定义日期(年、月和日)” – 然后使用这些实际日期的年、月、日值。
-
我明白你的意思了。但我仍然必须打破字符串来定义每个部分。我可以从字符串中取出小时、分钟和秒。将字符串转换为int,我将其转换为秒。与分钟相同。然后我只需将秒数相互比较。但我想知道直接字符串是否可以视为日期。
-
好吧,如果您只是处理一天内的时间跨度,您可以将输入转换为秒并使用它们进行比较。使用严格定义的格式拆分字符串非常容易。
-
我想我刚刚回答了我的问题,是的...有时您只需将您的问题写下来以再次清楚地查看。你真的帮了我大忙!
标签: javascript datetime type-conversion momentjs