2010-02-02 6 views
0

J'ai une chaîne nommée date. date soutient une date comme jan 10. Je veux vérifier si ça tombe entre deux dates ou pas. L'exemple jan 10 est compris entre dec 10 et feb 10. Comment puis-je faire cette tâche?problème de comparaison de date

+0

Pouvez-vous s'il vous plaît utiliser des lettres majuscules au début des phrases et des noms propres? –

+0

Les trois dates sont-elles toutes en chaîne? – zapping

Répondre

0

Manish

Cela devrait le faire si vous utilisez C#

public bool IsDateBetweenOtherDates(DateTime startDate,DateTime endDate, DateTime testDate) 
    { 
     return startDate < testDate && endDate > testDate; 
    } 
+0

vous pouvez également utiliser des méthodes d'extension. –

0
string date = "jan 10"; 
var dt = DateTime.ParseExact(date, "MMM dd", CultureInfo.InvariantCulture); 
if (dt < new DateTime(dt.Year, 12, 10) && 
    dt > new DateTime(dt.Year, 2, 10)) 
{ 
    // the date is between 10 feb and 10 dec. 
} 
+0

Votre première distribution de date n'est pas tout à fait correcte. Ça va le jeter à la même année que son rendez-vous. Vous avez besoin de dt.Year - 1 –

+0

Étant donné que l'entrée n'a pas de composant d'année, la méthode 'ParseExact' utilisera l'année en cours et si vous utilisez' dt.Year-1', la condition ne sera ** jamais ** satisfaite. –

0

Vous devez utiliser DateTime.TryParse() pour transformer votre chaîne en un DateTime, qui peut ensuite être comparée à d'autres dates.

DateTime minDate = // minimum boundary 
DateTime maxDate = // maximum boundary 
string input = "January 10, 2010"; 
DateTime inputDate; 
if (DateTime.TryParse(input, out inputDate)) 
{ 
    if (inputDate > minDate && inputDate < maxDate) 
    { 
     ... 
    } 
} 
1

Convertissez vos dates pour DateTime et que d'utiliser les JPLabs extension method Between.

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace JpLabs.Extensions 
{ 
    public static class ComparableExt 
    { 
     static public bool Between<T>(this T actual, T lower, T upper) where T : IComparable<T> 
     { 
      return actual.CompareTo(lower) >= 0 && actual.CompareTo(upper) < 0; 
     } 
    } 
} 

J'espère que cela aide.

-1

Essayez ceci:

public bool IsDateBetweenOtherDates(DateTime startDate,DateTime endDate, DateTime testDate) 
    { 
     return startDate < testDate && endDate > testDate; 
    } 
+0

Envisagez d'expliquer pourquoi ce code devrait fonctionner. Cela rend la réponse plus utile aux autres et a plus de chances d'être appréciée. – Kris