任何人都可以帮我格式化以下内容吗?
if(system.datetime.now > 20:00:00 AND < 23:59:59)
NewDateTime = (system.datetime.now + 1 day) + time as 00:01:00
即如果sysdate符合条件,则使NewDateTime = Sysdate + 1天,时间为00:01:00
感谢
答案 0 :(得分:5)
你根本不应该处理格式化。我怀疑你想要的东西:
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);
}
这里重要的一点是,我只会在{/ 1}} 一次,而不是每次我们对“当前时间”感兴趣。这样可以提高一致性。
我也会质疑你的“最新”部分 - 你真的希望这种行为在23:59:59.5不同吗?难道你真的意味着“晚上8点以后的任何时间”?也许这也应该是包容性的?这将导致:
DateTime.Now
答案 1 :(得分:1)
DateTime now = DateTime.Now;
DateTime newDateTime;
if (now.Hours >= 20)
{
newDateTime = now.Date.AddDays(1).AddHours(1);
}
答案 2 :(得分:0)
大概这就是我想你想要的:
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);
答案 3 :(得分:0)
您的代码在许多方面无效:
if(system.datetime.now > 20:00:00 AND < 23:59:59)
在C#中,没有“between”运算符,因此您需要进行两次比较以及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#没有时间文字。现在它取决于你想要比较的具体内容。你打算看看它已经是20点了吗?然后执行(注意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
s,当您还需要指定分钟数和秒数(例如假设为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) {...}