2009-10-07 14 views
10

mam datę, która jest w formacie zwanym „String (Uogólnione-Time)”, patrz MSDN linked here, muszę sprawdzić, czy ta data jest dzisiaj, a jeśli jest to zrobić X.C# Jak mogę sprawdzić, czy data, która jest obecnie ciągiem jest dzisiaj?

Aby skomplikować ten nieznacznie mam int, który jest w tym przykładzie 4, jeśli int to 4, to chcę sprawdzić, czy data w formacie "String (Generalized-Time)" jest w ciągu ostatnich 4 dni, int może 7, 24, 30 itp.

Jak to napisać? Jestem nowicjuszem i jestem bardzo wdzięczny za pomoc.

Dzięki

Odpowiedz

32

Jak to:

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date == DateTime.Today) 
    { 
     // do some stuff 
    } 

Aby sprawdzić, czy to w każdej chwili w ciągu ostatnich czterech dni,

DateTime dt; 
    if (DateTime.TryParse(stringValue, out dt) && 
     dt.Date > DateTime.Today.AddDays(-4f) && 
     dt < DateTime.Now) 
    { 
     // do some stuff 
    } 

lub jako metodę rozszerzenia

public static bool WithinPreviousPeriod(this DateTime dt, int daysBack) 
{ 
    return dt.Date > DateTime.Today.AddDays(-daysBack)) 
      && dt < DateTime.Now; 
} 
+0

Awesome, w jaki sposób mogę sprawdzić, czy to w ciągu ostatnich 4 dni? Dzięki –

+0

Czy rozwiąże to problem na jakimkolwiek komputerze w dowolnej lokalizacji, czy też jest to analiza związana z ustawieniami regionalnymi systemu? Pytam tylko dlatego, że tak wiele osób wpada w kłopoty z datami. – spender

+0

DateTime.Parse nie obsługuje jednak formatu "Czas ogólny". Oto przykładowa wartość z RFC: 199412161032Z. Musisz przekazać niestandardowy ciąg formatu. – David

6
if(DateTime.Parse(yourString).Date == DateTime.Now.Date) 
{ 
    //do something 
} 

Należy sprawdzić, czy dzień jest dzisiaj. Jednak brakuje w nim sprawdzania błędów (zakłada, że ​​twójString jest poprawnym łańcuchem datetime).

Aby wykonać bardziej skomplikowane czek mógłby zrobić:

DateTime date = DateTime.Parse(yourString); 
int dateOffset = 4; 

if(date.Date >= DateTime.Now.AddDays(-dateOffset).Date) 
{ 
//this date is within the range! 
} 
+0

Dzięki Alan, spróbuję tego krótko. –

Powiązane problemy