So erhalten Sie den vorherigen Tag mit datetime

Ich wollen eine DateTime-Eigenschaft vorherigen Tag bei 00:00:00. Ich weiß nicht, warum DateTime.AddDays(-1) nicht funktioniert. Oder warum DateTime.AddTicks(-1) nicht funktioniert.
Zunächst soll das funktionieren?

Ich habe 2 Objekte. Jedes Objekt müssen die Datumzeit-Felder ValidFrom, ValidTo.

EDIT: Nach Hause kommen von der Arbeit habe ich versucht, das gleiche Verhalten wie meine business-Objekte Verhalten. Unten sind die Codes die ich habe versucht, zu replizieren, wie es aussieht bei der Arbeit. Das ist natürlich zu Hause arbeiten, aber nicht bei der Arbeit. Die gute Sache ist, ich bekam gute Antworten und +1 auf alle! =)

public class RuleValue
{
    public DateTime ValidFrom, ValidTo;

    public RuleValue(DateTime _validFrom, DateTime _validTo)
    {
        ValidFrom = _validFrom;
        ValidTo = _validTo;
    }

    //oldObject.ValidFrom = 1900-01-01
    //oldObject.ValidTo = 9999-12-31

    //newObject.ValidFrom = 2010-03-22
    //newObject.ValidTo = 9999-12-31
    public void ChangeOldDate(RuleValue oldObject, RuleValue newObject)
    {
        /* 
         * 1: When first object (oldObject) have ValidTo set to SQL-server maxdate (9999-12-12 23:59:59 etc)
         *    I want to allow for a new object to be created
         * 2: oldObject timespan ValidFrom-ValidTo should not be overlapping with newObjects timespan(i have checks for that)
         * 3: oldObject.ValidTo should be newObject.ValidFrom - one day/or one tick
         */

        if (oldObject.ValidTo == DateTime.MaxValue)
        {
            oldObject.ValidTo = newObject.ValidFrom.AddTicks(-1); //now works
        } 
    }
}

class Program
{
    static void Main(string[] args)
    {
        RuleValue rv1 = new RuleValue(DateTime.Parse("1900-01-01"), DateTime.MaxValue);
        RuleValue rv2 = new RuleValue(DateTime.Parse("2010-03-22"), DateTime.MaxValue);

        Console.WriteLine("First: ");
        Console.WriteLine("Old = " + rv1.ValidFrom + " - " + rv1.ValidTo);
        Console.WriteLine("New = " + rv2.ValidFrom + " - " + rv2.ValidTo);

        rv1.ChangeOldDate(rv1, rv2);

        Console.WriteLine("After: ");
        Console.WriteLine("Old = " + rv1.ValidFrom + " - " + rv1.ValidTo);
        Console.WriteLine("New = " + rv2.ValidFrom + " - " + rv2.ValidTo);

        Console.ReadKey();
    }
}
//Output:
//First:
//Old = 1900-01-01 00:00:00 - 9999-12-31 23:59:59
//New = 2010-03-22 00:00:00 - 9999-12-31 23:59:59
//After:
//Old = 1900-01-01 00:00:00 - 2010-03-21 23:59:59
//New = 2010-03-22 00:00:00 - 9999-12-31 23:59:59
// ALL CORRECT! :D
Kommentar zu dem Problem - Öffnen
können wir den code sehen für DataTime.AddDays(-1) ? Kommentarautor: David Fox
Editiert oben... Kommentarautor: Niike2
AddDays() scheint zu sein, Microsoft-spezifische, weil die Dokumentation ist in MSDN. Möglicherweise ein IronPython-spezifische Funktion? Es ist definitiv kein standard-Python datetime, da es nicht in docs.python.org/3/library/datetime.html Kommentarautor: Ron Kalian

InformationsquelleAutor der Frage Niike2 | 2010-03-22

Schreibe einen Kommentar