簡體   English   中英

如果DateTime.Now.ToString(“ HH:mm”)等於

[英]C# if DateTime.Now.ToString(“HH:mm”) is equals to

我編寫了一個腳本,檢查當前時間是否等於字符串,代碼為:

    string ore = Properties.Settings.Default.oreChiusura;
string minuti = Properties.Settings.Default.minutiChiusura;
var t1 = DateTime.Now.ToString("HH:mm");
var t2 = ore + ":" + minuti;

if(t1 == t2)
{
     //Stuff
}

問題是,如果“ minuti”像01 .... 09那樣不起作用,則僅當數字不以0開頭時才起作用。我在做什么錯了?

您的示例很好地說明了以下原則:如果可以使用整數進行比較,則不應該對字符串進行比較:

var adesso = DateTime.Now;
var oreAdesso = adesso.Hour;
var minutiAdesso = adesso.Minute;
if (oreAdesso == ore && minutiAdesso == minuti) {
    ...
}

使用此代碼:

string ore = Properties.Settings.Default.oreChiusura;
string minuti = Properties.Settings.Default.minutiChiusura;
var t1 = DateTime.Now.ToString("HH:mm");
var t2 = ore.PadLeft(2, '0') + ":" + minuti.PadLeft(2, '0');

if(t1 == t2)
{
     //Stuff
}

但! 強烈建議更改代碼以使用TimeSpan設置代替oreChiusuraminutiChiusura設置,然后比較TimeSpan值而不是字符串。

例如:

var t1 = DateTime.Now.TimeOfDay;
var t2 = Properties.Settings.Default.Chiusura;
if(t1 == t2)
{
     //Stuff
}

您可以通過將oreminuti為int,然后比較這些值來實現。

int ore = Convert.ToInt32(Properties.Settings.Default.oreChiusura);
int minuti = Convert.ToInt32(Properties.Settings.Default.minutiChiusura);
DateTime t1 = DateTime.Now;

if(t1.Hour == ore && t1.Minute ==  minuti)
{
   //Stuff
}

此代碼比較小時和分鍾的真實值,而不是它們的字符串值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM