任何人都可以幫助我的格式如下?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