¿Hay alguna manera fácil de obtener DateTime.Now
'TimeMin
' y 'TimeMax
'?DateTime.Now - primer y último minuto del día
Respuesta
Aquí hay dos extensiones que utilizo para hacer exactamente eso.
/// <summary>
/// Gets the 12:00:00 instance of a DateTime
/// </summary>
public static DateTime AbsoluteStart(this DateTime dateTime)
{
return dateTime.Date;
}
/// <summary>
/// Gets the 11:59:59 instance of a DateTime
/// </summary>
public static DateTime AbsoluteEnd(this DateTime dateTime)
{
return AbsoluteStart(dateTime).AddDays(1).AddTicks(-1);
}
Esto le permite escribir:
DateTime.Now.AbsoluteEnd() || DateTime.Now.AbsoluteStart()
o
DateTime partyTime = new DateTime(1999, 12, 31);
Console.WriteLine("Start := " + partyTime.AbsoluteStart().ToString());
Console.WriteLine("End := " + partyTime.AbsoluteEnd().ToString());
AbsoluteStart se puede relacionar con DateTime.Now.Date –
¿Quiere decir dateTime.Date? – hunter
'DateTime.Now.AbsoluteStart()' es redundante, ya que sería idéntico a 'DateTime.Today'. 'DateTime.Today' es" Un objeto que se establece en la fecha de hoy, con el componente de hora configurado en 00:00:00 ". - MSDN – Powerlord
tratar
//midnight this morning
DateTime timeMin = DateTime.Now.Date;
//one tick before midnight tonight
DateTime timeMax = DateTime.Now.Date.AddDays(1).AddTicks(-1)
Si está usando este para el filtrado, como sus comentarios sugieren, se es probablemente una buena idea para guardar DateTime . Ahora en una variable, solo en caso de que la fecha coincida entre las dos llamadas. Muy poco probable, pero llámalo bastantes veces y, inevitablemente, sucederá un día (más bien la noche).
DateTime currentDateTime = DateTime.Now;
DateTime timeMin = currentDateTime.Date;
DateTime timeMax = currentDateTime.Date.AddDays(1).AddTicks(-1)
Ocurrirá invariablemente * dos * días, como se verá después. –
que haría uso de lo siguiente:
DateTime now = DateTime.Now;
DateTime startOfDay = now.Date;
DateTime endOfDay = startOfDay.AddDays(1);
y utilizar < endOfDay
en lugar de <= endOfDay
. Esto significa que funcionará independientemente de si la precisión es de minutos, segundos, milisegundos, tics u otra cosa. Esto evitará errores como the one we had on StackOverflow (aunque el consejo fue ignored).
Tenga en cuenta que es importante llamar solo al DateTime.Now
una vez si desea comenzar y finalizar el mismo día.
Creo que el objetivo es obtener una fecha en su primer y último momento, no siempre para el cálculo, sino principalmente para el cálculo – hunter
Al igual que otros que responden, no estoy muy seguro de lo que estás pidiendo, pero en caso que usted quiera el menor tiempo posible y el mayor tiempo posible, (no sólo en un día), entonces no hay DateTime.MinValue
y DateTime.MaxValue
que devuelven 1/1/0001 12:00:00 AM y 31/12/9999 11:59:59 PM respectivamente.
Yo aconsejaría que nos fijamos en esta respuesta: How can I specify the latest time of day with DateTime
Si sus DateTime originales también, potencialmente, incluyen veces, utilizando los AddDays() método se sumará un total de 24 horas, lo cual puede no ser precisamente lo que quiere .
public static DateTime ToEndOfDay(this DateTime time)
{
var endOfDaySpan = TimeSpan.FromDays(1).Subtract(TimeSpan.FromMilliseconds(1));
return time.Date.Add(endOfDaySpan);
}
Un pequeño pellizco a la solución del cazador por encima de ... utilizo el siguiente método de extensión para llegar al final del día:
public static DateTime EndOfDay(this DateTime input) {
return input.Date == DateTime.MinValue.Date ? input.Date.AddDays(1).AddTicks(-1) : input.Date.AddTicks(-1).AddDays(1);
}
Esto debe manejar casos en que el DateTime es bien DateTime.MinValue
o DateTime.MaxValue
. Si llama a AddDays (1) en DateTime.MaxValue, obtendrá una excepción. Del mismo modo, al llamar AddTicks (-1) en DateTime.MinValue
también se lanzará una excepción.
Tenga en cuenta que si estás pasando esta vez con el servidor SQL se debe utilizar
dateTime.Date.AddDays(1).AddMilliseconds(-3);
Ver:
Usted debe tener cuidado de usar
(new DateTime()).AddDays(1).AddTicks(-1);
cuando se pasa al procedimiento almacenado.
Puede ocurrir que el valor se aproxime al día siguiente.
DateTime.Today.AddDays(1).AddSeconds(-1);
No es muy exacto, pero solucionó mis problemas. Ahora podemos usar AddMilliseconds, AddTicks y etc. Creo que variará según lo que satisfaga su necesidad.
- 1. Primer y último día del mes actual
- 2. cómo conseguir el primer día y el último día de la semana y el año número
- 3. Buscar primero y último día del último trimestre en ORACLE
- 4. Obtenga las fechas del primer y último día del mes anterior en C#
- 5. ¿Cuál es la mejor manera de obtener el primer y el último día del mes pasado?
- 6. ¿Cómo puedo obtener el primer y último día del mes con DateTime de Perl?
- 7. Buscar el primer y último día del mes calendario anterior en SQL Server Reporting Services (VB.Net)
- 8. cálculo del último día del mes
- 9. Cómo obtener el último día del mes
- 10. Obtener el último día del mes?
- 11. Calcule el último día del trimestre
- 12. Último día del mes en .NET
- 13. Javascript a fecha del último día del mes anterior
- 14. Encontrar el primer día del calendario
- 15. primer día del año en curso
- 16. NSDate para el primer día del mes
- 17. primer día del mes anterior en javascript
- 18. Obtener el objeto de fecha para el primer/último día del año actual
- 19. cómo obtener el primer y último día de un mes dado
- 20. para eliminar el primer y último elemento del conjunto
- 21. MySQL - Último día del trimestre (forma más eficiente)
- 22. ¿Cómo se encuentra el último día del mes?
- 23. Obtener el último día del mes anterior en Oracle Función
- 24. programador de cuarzo: se ejecuta el último día del mes
- 25. ¿Cómo puedo obtener el último día del mes en C#?
- 26. ¿Cómo calculo el último día del mes en SQL?
- 27. Seleccione el primer día del mes anterior en (DB2) SQL
- 28. ¿Diferencia de versión para strtotime ("primer día del mes pasado")?
- 29. ¿Cómo obtengo el primer día del mes actual?
- 30. MySQL convertir TIMEDIFF salida a día, hora, minuto, segundo formato
¿Quiere decir 00: 00: 00,000 y 23: 59: 59.999? – Fosco
¿Está tratando de preparar su software para que pueda ser utilizado en Marte algún día? –
¿Qué significa "TimeMin" y "TimeMax"? ¿Exactamente? – Oded