Czy istnieje łatwy sposób uzyskania "i" "i" TimeMax
"?DateTime.Now - pierwsza i ostatnia minuta dnia
Odpowiedz
Oto dwa rozszerzenia, których używam do tego celu.
/// <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);
}
Pozwala to napisać:
DateTime.Now.AbsoluteEnd() || DateTime.Now.AbsoluteStart()
lub
DateTime partyTime = new DateTime(1999, 12, 31);
Console.WriteLine("Start := " + partyTime.AbsoluteStart().ToString());
Console.WriteLine("End := " + partyTime.AbsoluteEnd().ToString());
AbsoluteStart można zastąpić DateTime.Now.Date –
masz na myśli dateTime.Date? – hunter
'DateTime.Now.AbsoluteStart()' jest zbędny, ponieważ byłby identyczny z 'DateTime.Today'. 'DateTime.Today' is" Obiekt, który jest ustawiony na dzisiejszą datę, z komponentem czasu ustawionym na 00:00:00. " - MSDN – Powerlord
spróbować
//midnight this morning
DateTime timeMin = DateTime.Now.Date;
//one tick before midnight tonight
DateTime timeMax = DateTime.Now.Date.AddDays(1).AddTicks(-1)
Jeśli używasz tego do filtrowania, jak komentarze sugerują, to to prawdopodobnie dobry pomysł na zapisanie DateTime Przejdź teraz do zmiennej, na wypadek gdyby data podziałała pomiędzy dwoma połączeniami. Bardzo mało prawdopodobne, ale nazwijmy to wystarczająco dużo razy i nieuchronnie stanie się to pewnego dnia (raczej noc).
DateTime currentDateTime = DateTime.Now;
DateTime timeMin = currentDateTime.Date;
DateTime timeMax = currentDateTime.Date.AddDays(1).AddTicks(-1)
To się zawsze stanie * dwa * dni, jak się okazuje. –
bym użyć następujących:
DateTime now = DateTime.Now;
DateTime startOfDay = now.Date;
DateTime endOfDay = startOfDay.AddDays(1);
i używać < endOfDay
zamiast <= endOfDay
. Będzie to oznaczać, że zadziała niezależnie od tego, czy precyzja jest minutą, sekundą, milisekundą, kleszczem, czy czymś innym. Pozwoli to uniknąć błędów, takich jak the one we had on StackOverflow (chociaż porady były ignored).
Pamiętaj, że ważne jest, aby dzwonić tylko pod jeden numer DateTime.Now
, jeśli chcesz rozpocząć i zakończyć tego samego dnia.
Myślę, że chodzi o to, aby uzyskać datę w pierwszej i ostatniej chwili, nie zawsze do obliczeń, ale przede wszystkim do obliczeń – hunter
Podobnie jak inni oferenci, nie jestem do końca pewien, o co prosisz, ale chcesz uzyskać możliwie najdrobniejszy czas i czas (nie tylko w jeden dzień), a następnie DateTime.MinValue
i DateTime.MaxValue
, które zwracają 1/1/0001 12:00:00 AM i 12/31/9999 11:59:59 PM odpowiednio.
Radziłbym, aby spojrzeć na to odpowiedź: How can I specify the latest time of day with DateTime
Jeśli oryginalne DateTimes także potencjalnie obejmować razy, używając AddDays() metoda doda pełne 24 godziny, który nie może być dokładnie to, co chcesz .
public static DateTime ToEndOfDay(this DateTime time)
{
var endOfDaySpan = TimeSpan.FromDays(1).Subtract(TimeSpan.FromMilliseconds(1));
return time.Date.Add(endOfDaySpan);
}
Jeden mały uszczypnąć do rozwiązania myśliwskiej nad ... używam następującą metodę rozszerzenia aby dostać się do końca dnia:
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);
}
ten powinien obsługiwać przypadki, w których DateTime jest albo DateTime.MinValue
lub DateTime.MaxValue
. Jeśli wywołasz AddDays (1) w DateTime.MaxValue, otrzymasz wyjątek. Podobnie wywołanie AddTicks (-1) na DateTime.MinValue
spowoduje również zgłoszenie wyjątku.
Należy pamiętać, że jeśli tym razem przechodząc do serwera SQL należy użyć
dateTime.Date.AddDays(1).AddMilliseconds(-3);
Patrz:
Musisz być ostrożny, aby korzystać
(new DateTime()).AddDays(1).AddTicks(-1);
po przejściu do procedury składowanej.
Może się zdarzyć, że wartość zostanie przybliżona do następnego dnia.
DateTime.Today.AddDays(1).AddSeconds(-1);
Niezbyt dokładna, ale rozwiązała moje problemy. Teraz możemy korzystać z AddMilliseconds, AddTicks i innych. Myślę, że będzie to zależało od tego, co zaspokoi Twoje potrzeby.
- 1. Godzina i minuta w PHP
- 2. Dlaczego drift DateTime.Now i StopWatch?
- 3. DateTime.now w Elixir i Ecto
- 4. Jodobime początek dnia i koniec dnia
- 5. JVM minuta długa GC
- 6. Przycisk Wstecz i ostatnia aktywność
- 7. Ostatnia ostatnia kolumna z Androidem GridView, cięcie
- 8. Optymalizowanie alternatywy dla DateTime.Now
- 9. DateTime.Now vs czasu systemowego
- 10. Datetime.now jako wartość TimeSpan?
- 11. Dlaczego druga pętla for zawsze działa szybciej niż pierwsza?
- 12. Dlaczego znaczniki pozycji, takie jak pierwsza lub ostatnia, w wyliczeniu są uważane za złe praktyki?
- 13. Common Lisp: pierwsza zwraca najpierw, ale ostatnia zwraca listę ostatnich - huh?
- 14. Znacznik czasu Pythona od dnia, miesiąca, roku
- 15. Django DateTimeField porównać z DateTime.Now()
- 16. Grafit - precyzja renderowania niższa niż 1 minuta
- 17. Jak uzyskać nazwę dnia od wybranej daty?
- 18. Django - ostatnia wstawka id
- 19. Pythona sortowania Ostatnia Postacie
- 20. Uzyskaj nazwę dnia od dnia tygodnia int
- 21. Jak uzyskać min, sekundy i milisekundy z datetime.now() w python?
- 22. filtr sqlalchemy porównując DateTime.Now() i domyślne kolumny dat
- 23. Pobierz sygnaturę czasową na początek dnia
- 24. Wyświetlanie nazwy dnia i miesiąca w ssrs
- 25. Pierwsza funkcja w R
- 26. Wyświetlacz pierwsza litera tylko
- 27. Visual Studio Ostatnia lista projektów
- 28. Sprawdzenie czy DateTime jest przed DateTime.Now
- 29. SqlDateTime przepełnienie podczas wstawiania wartości z DateTime.Now
- 30. Format DateTime.Now do rrrr-mm-dd
Masz na myśli 00: 00: 00.000 i 23: 59: 59.999? – Fosco
Próbujesz przygotować swoje oprogramowanie, aby kiedyś można było go używać na Marsie? –
Co oznaczają "TimeMin" i "TimeMax"? Dokładnie? – Oded