C# 如果当前时间介于两个军事时间之间,则返回true?
我这里有一个函数,如果当前时间介于两个军事时间之间,它会尝试返回true 这里的问题是找到C# 如果当前时间介于两个军事时间之间,则返回true?,c#,C#,我这里有一个函数,如果当前时间介于两个军事时间之间,它会尝试返回true 这里的问题是找到2130和0700之间的时间有点棘手。2130工作正常,但是0700在2130之前,因此在这里返回false。我怎样才能让它返回真值 只需将&切换到| public bool IsSleeping() { DateTime m_dt = DateTime.Now; string strMilitaryTime; int time; strMilitaryTime = m_d
2130
和0700
之间的时间有点棘手。2130
工作正常,但是0700
在2130
之前,因此在这里返回false。我怎样才能让它返回真值
只需将&
切换到|
public bool IsSleeping()
{
DateTime m_dt = DateTime.Now;
string strMilitaryTime;
int time;
strMilitaryTime = m_dt.ToString("HHmm"); // Get current military time
time = Convert.ToInt32(strMilitaryTime); // Convert to int
// The time must be between sleeping hours of 2400 and 0700.
if (time >= 2130 && time < 700)
return true;
return false;
}
public bool IsSleeping()
{
DateTime m_dt=DateTime.Now;
字符串strMilitaryTime;
整数时间;
strMilitaryTime=m_dt.ToString(“HHmm”);//获取当前军事时间
time=Convert.ToInt32(strMilitaryTime);//转换为int
//睡眠时间必须介于2400和0700之间。
如果(时间>=2130&&time<700)
返回true;
返回false;
}
公共静态布尔IsSleeping()
{
TimeSpan now=DateTime.now.TimeOfDay;
之前的时间跨度=新的时间跨度(7,0,0);
之后的时间跨度=新的时间跨度(21,30,0);
现在返回after;
}
公共静态布尔IsSleeping()
{
TimeSpan now=DateTime.now.TimeOfDay;
之前的时间跨度=新的时间跨度(7,0,0);
之后的时间跨度=新的时间跨度(21,30,0);
现在返回after;
}
“军事时间”不是一个东西(或者至少是一个非常以美国为中心的术语)。我想你的意思是24小时制,但是什么时区?把“&&”换成“| |”就行了?请试试看。您还可以:return(time>=2130&&time<700)
使用整数并不理想,请使用TimeSpan
表示一天中的某个时间值。Gilad,最初尝试过这个方法。如果你想一想,如果时间是2300,它不小于700,那么它将返回false。@Phil-对于|
来说,其中一个语句为true就足够了:)因此对于2300
来说,第一个语句为true,因此返回true。在任何情况下,Dai建议使用TimeSpan
都是一个很好的方法,“军事时间”不是一件事(或者至少,它是一个非常以美国为中心的术语)。我想你的意思是24小时制,但是什么时区?把“&&”换成“| |”就行了?请试试看。您还可以:return(time>=2130&&time<700)
使用整数并不理想,请使用TimeSpan
表示一天中的某个时间值。Gilad,最初尝试过这个方法。如果你想一想,如果时间是2300,它不小于700,那么它将返回false。@Phil-对于|
来说,其中一个语句为true就足够了:)因此对于2300
来说,第一个语句为true,因此返回true。在任何情况下,Dai建议使用TimeSpan
都是一个很好的方法。请不要丢弃“固定”代码,解释您的方法以及解决问题的原因。这对我来说非常易读。谢谢虽然我想知道TimeOfDay是否返回24小时时间,但MSDN可能会回答这个问题。请不要转储“固定”代码,解释您的方法以及解决问题的原因。这对我来说非常可读。谢谢虽然我想知道TimeOfDay是否返回24小时时间,但MSDN可能会回答这个问题。
public static Boolean IsSleeping()
{
TimeSpan now = DateTime.Now.TimeOfDay;
TimeSpan before = new TimeSpan( 7, 0, 0 );
TimeSpan after = new TimeSpan( 21, 30, 0 );
return now < before || now > after;
}