C# 如果当前时间介于两个军事时间之间,则返回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

我这里有一个函数,如果当前时间介于两个军事时间之间,它会尝试返回true

这里的问题是找到
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;
}