Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to get previous day using datetime
    primarykey
    data
    text
    <p>I want to set a DateTime property to previous day at 00:00:00. I don't know why DateTime.AddDays(-1) isn't working. Or why DateTime.AddTicks(-1) isn't working. First should this work?</p> <p>I have 2 objects. Each object have DateTime fields ValidFrom, ValidTo.</p> <p>EDIT: After coming home from work I tried to get the same behavior as my business objects behave. Below are the code I tried to replicate how it looks at work. Of course this is working at home but not at work. The good thing is I got good answers and +1 on all! =)</p> <pre><code>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 </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload