任何人都可以帮助我的格式如下?c#日期/时间格式
if(system.datetime.now > 20:00:00 AND < 23:59:59)
NewDateTime = (system.datetime.now + 1 day) + time as 00:01:00
即如果SYSDATE符合标准,使NewDateTime =系统日期+ 1天,随着时间00:01:00
感谢
任何人都可以帮助我的格式如下?c#日期/时间格式
if(system.datetime.now > 20:00:00 AND < 23:59:59)
NewDateTime = (system.datetime.now + 1 day) + time as 00:01:00
即如果SYSDATE符合标准,使NewDateTime =系统日期+ 1天,随着时间00:01:00
感谢
你不应该处理格式在这里。我怀疑你想要的东西,如:
TimeSpan earliest = new TimeSpan(20, 0, 0);
TimeSpan latest = new TimeSpan(23, 59, 59);
DateTime now = DateTime.Now;
TimeSpan currentTime = now.TimeOfDay;
if (currentTime > earliest && currentTime < latest)
{
DateTime newDateTime = now.Date.AddDays(1).AddHours(1);
}
一个重要的这里的一点是,我只服用DateTime.Now
一次,而不是每一个我们感兴趣的是“当前时间”的时间。这导致更好的一致性。
我也会质疑你的“最新”的一部分 - 你真的想要在23:59:59.5的行为是不同的?难道你不是真的的意思是“晚上8点以后的任何时间”?这可能也应该包容性的?这将导致:
// Probably make this a static readonly field
TimeSpan earliest = new TimeSpan(20, 0, 0);
DateTime now = DateTime.Now;
TimeSpan currentTime = now.TimeOfDay;
if (currentTime >= earliest)
{
DateTime newDateTime = now.Date.AddDays(1).AddHours(1);
}
Bah,在20秒钟内被Skeet击败!代表猪!我也买了你的书;) –
哈哈耶喜欢什么期望从Skeet? hahaha –
DateTime now = DateTime.Now;
DateTime newDateTime;
if (now.Hours >= 20)
{
newDateTime = now.Date.AddDays(1).AddHours(1);
}
例如,如果小时为8:30:00,条件(now.Hours> 8)将工作吗(它应该返回true)? –
好点,修改为'now.hours> = 20'。在20:30,'now.Hours'将会是20. –
大约这就是我想你想:
CurrentTime=DateTime.Now;
if(CurrentTime.GetHour()>19)
{
NewDateTime=CurrentTime.AddDays(1);
NewDateTime.SetHour(1);
NewDateTime.SetMinute(0);
NewDateTime.SetSecond(0);
}
我认为你可以做到这一点 - 如果没有你可以根据当前时间计算时间
NewDateTime.AddHours(-CurrentTime.Hour-1)
NewDateTime.AddMinutes(-CurrentTime.Minute);
您的代码是无效的在很多方面:
if(system.datetime.now > 20:00:00 AND < 23:59:59)
在C#中,没有运营商 “之间”,所以你需要两个比较加上AND
:
if(system.datetime.now > 20:00:00 AND system.datetime.now < 23:59:59)
据&&
(为or
,它是||
)
if(system.datetime.now > 20:00:00 && system.datetime.now < 23:59:59)
注即&&
和||
具有短路行为,即如果&&
的左操作数为false
,则右操作数不被评估。与||
相同,区别在于如果左侧操作数为true
,则不评估右侧操作数。
C#没有时间字面值。现在取决于你想要比较的是什么。你打算看看是否已经是二十点了吗?然后做(注意DateTime.Now
也包含今天的日期,DateTime.Today
是当前一天的开始):
if(system.datetime.now > system.datetime.today.addHours (20)
&& system.datetime.now < system.datetime.today.addDays (1))
C#源代码是区分大小写的,所以
if(System.DateTime.Now > System.Datetime.Today.AddHours (20)
&& System.DateTime.Now < System.DateTime.Today.AddDays (1))
你也可以用TimeSpan
的工作,它派上用场的时候你也想指定分钟和秒(假设20:15为例):
if(System.DateTime.Now > System.Datetime.Today.Add (new TimeSpan(20,15,0))
&& System.DateTime.Now < System.DateTime.Today.AddDays (1))
我建议使用命名值,虽然:
var tomorrow = System.DateTime.Today.AddDays(1);
var quincyTime = today.Add (new TimeSpan (20,15,0));
if(System.DateTime.Now > quincyTime && System.DateTime.Now < tomorrow)
而且,这是很重要的,Now
给你(大致)当你调用它的那一刻。所以,如果你有Now
多次调用,存储它,所以它不会在你的函数的执行转换:
var now = System.DateTime.Now;
var today = System.DateTime.Today;
var quincyTime = today.Add (new TimeSpan (20,15,0));
var tomorrow = today.AddDays(1);
if(now > quincyTime && now < tomorrow)
的观察读者可能会承认,甚至没有Today
如果这个程序在运行核电可能保存午夜的电厂。有治愈:
var now = System.DateTime.Now;
var today = now.Date;
还要注意,if-body是一个单独的陈述,例如,
if(now > quincyTime && now < tomorrow)
; // empty statement
if(now > quincyTime && now < tomorrow)
foobar();
或者整个 “块”:
if(now > quincyTime && now < tomorrow)
{
} // empty block
if(now > quincyTime && now < tomorrow)
{
foobar();
frob();
}
顺便说一句,如果你指的是 “至少”/ “的最大” 而不是 “以后”/ “快”,用<=
和>=
:
if(now >= quincyTime && now <= tomorrow) {...}
好的提示谢谢 – DarkW1nter
为什么选择caml标签? –
你根本没有做任何格式化 - 而且这也不是可以编译的东西。 – Oded
这只是伪代码?如果没有,那么你的语法全错了。 'AND'而不是'&&',时间限制等格式不正确。 – ChrisF