c#日期/时间格式

时间:2011-07-14 09:39:57

标签: c# .net

任何人都可以帮我格式化以下内容吗?

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

感谢

4 个答案:

答案 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) {...}