我想返回一个常量字符串值恒说计算基于当前时间
“A”如果当前的时间跨度下降between 06:00 – 14:00
和
“B”如果当前时间落在between 14:00 – 22:00
。如果两种情况均不满意,则应返回“C”
请提出实现此目的的最佳方法。
我想返回一个常量字符串值恒说计算基于当前时间
“A”如果当前的时间跨度下降between 06:00 – 14:00
和
“B”如果当前时间落在between 14:00 – 22:00
。如果两种情况均不满意,则应返回“C”
请提出实现此目的的最佳方法。
试试这个:如果时间是14:01
static string GetValue(DateTime date)
{
var time = date.TimeOfDay;
if (time.TotalHours >= 6 && time.TotalHours < 14)
{
return "A";
}
if (time.TotalHours >= 14 && time.TotalHours < 22)
{
return "B";
}
return null;
}
此代码将返回 “B”。
然后,你的最右边的不平等应该从'<='改变为'<'。 – 2012-08-08 06:45:24
@JeppeStigNielsen:同意。 – Dan 2012-08-08 06:47:10
[DateTime。]小时属性的值总是使用24小时制的 时钟表示。 MSDN
但是好了,你的约会的类型必须为DateTime
,不TimeSpan
的。
if (DateTime.Now.Hour >= 6 && DateTime.Now.Hour <= 14)
return "A";
else if (DateTime.Now.Hour >= 14 && DateTime.Now.Hour <= 22)
return "B";
这是行不通的,因为如果时间是14:01,就会返回“A”。在这种情况下,应该返回“B”,但不是。 – Dan 2012-08-08 06:29:19
不要四次调用'.Now'获得者。代码运行时,“Now”可能会更改。 – 2012-08-08 06:40:00
尝试使用Datetime.Compare来比较两次。
您无法确定TimeSpan的“何时”。 TimeSpan是一个时间间隔,与当前时间无关。 – 2012-08-08 06:19:44
如果该值不属于两个范围,会返回什么? – 2012-08-08 06:20:03
先说'int h = DateTime.Now.Hour;'。那么如果'h'大于或等于'6'并且小于'14',则取''A''。等等。 – 2012-08-08 06:47:21