Eu tenho duas datas. Uma data é entrada e outra é DateTime.Now
. Eu tenho eles em mm/dd/yyyy
formato, pode até ser o formato m / d / yy também. Ambas as datas são anuláveis, ou seja, o tipo de dados é DateTime?
, já que eu posso passar null também como entrada. Agora eu quero comparar as duas datas apenas com mm/dd/yyyy
ou m/d/yy
formato.
Respostas:
67 para resposta № 1Se você tem suas datas em variáveis DateTime, elas não ter um formato.
Você pode usar o Date
propriedade para retornar um valor DateTime com a parte da hora definida como meia-noite. Então, se você tem:
DateTime dt1 = DateTime.Parse("07/12/2011");
DateTime dt2 = DateTime.Now;
if(dt1.Date > dt2.Date)
{
//It"s a later date
}
else
{
//It"s an earlier or equal date
}
24 para resposta № 2
Se você tem data em DateTime
variável, então é um DateTime
objeto e não contém nenhum formato. A data formatada é expressa como string
quando Você ligar DateTime.ToString
método e fornecer formato nele.
Vamos dizer que você tem dois DateTime
variável, você pode usar o método de comparação para comparação,
DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
DateTime date2 = new DateTime(2009, 8, 2, 0, 0, 0);
int result = DateTime.Compare(date1, date2);
string relationship;
if (result < 0)
relationship = "is earlier than";
else if (result == 0)
relationship = "is the same time as";
else
relationship = "is later than";
Fragmento de código retirado de msdn.
8 para resposta № 3
Em primeiro lugar, entenda que DateTime
objetos não são formatados. Eles apenas armazenam o ano, mês, dia, hora, minuto, segundo, etc como um valor numérico e a formatação ocorre quando você quer representá-lo como uma string de alguma forma. Você pode comparar DateTime
objetos sem formatá-los.
Para comparar uma data de entrada com DateTime.Now
, você precisa primeiro analisar a entrada em uma data e comparar apenas as porções Ano / Mês / Dia:
DateTime inputDate;
if(!DateTime.TryParse(inputString, out inputDate))
throw new ArgumentException("Input string not in the correct format.");
if(inputDate.Date == DateTime.Now.Date) {
// Same date!
}