【发布时间】:2011-01-30 10:13:20
【问题描述】:
我想将 DateTime 属性设置为前一天的 00:00:00。我不知道为什么 DateTime.AddDays(-1) 不起作用。或者为什么 DateTime.AddTicks(-1) 不起作用。 首先这应该有效吗?
我有 2 个对象。每个对象都有 DateTime 字段 ValidFrom、ValidTo。
编辑:下班回家后,我试图获得与业务对象相同的行为。下面是我试图复制它的工作方式的代码。当然,这是在家工作,但不是在工作。好消息是我得到了很好的答案和+1! =)
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
【问题讨论】:
-
我们可以查看您的 DataTime.AddDays(-1) 代码吗?
-
AddDays()似乎是 Microsoft 特定的,因为文档位于 MSDN 中。可能是 IronPython 的特定功能?它绝对不是标准的 Pythondatetime,因为它不在 docs.python.org/3/library/datetime.html