C# 如何将DateTime中的差异应用于c中的DateTime对象列表#
我有一些代码,可以检测对象的属性何时发生更改,这些对象将被持久化到数据库中。检测发生在它们被保存回数据库之前 我想知道将更改及时应用于一整套相关日志项的最佳方法 假设我有一个日期时间为的项目 2000年1月1日00:00:00 我把它改成 2000年1月2日06:00:00 我知道我需要将每个日志项向前移动1天6小时。我应该手动编写代码来处理所有这些问题,还是.net为我提供了一些平滑的处理方法。DateTimeOffset听起来是个不错的主意,但我不认为它用于此C# 如何将DateTime中的差异应用于c中的DateTime对象列表#,c#,.net,datetime,C#,.net,Datetime,我有一些代码,可以检测对象的属性何时发生更改,这些对象将被持久化到数据库中。检测发生在它们被保存回数据库之前 我想知道将更改及时应用于一整套相关日志项的最佳方法 假设我有一个日期时间为的项目 2000年1月1日00:00:00 我把它改成 2000年1月2日06:00:00 我知道我需要将每个日志项向前移动1天6小时。我应该手动编写代码来处理所有这些问题,还是.net为我提供了一些平滑的处理方法。DateTimeOffset听起来是个不错的主意,但我不认为它用于此 如果我自己构建这个,我可能会计
如果我自己构建这个,我可能会计算一个时间跨度,如果这个跨度应该从日期时间中加上或减去。但是有更好的方法吗?只需在
DateTime
对象上使用Add*方法即可
DateTime d1 = DateTime.Now;
d1 = d1.AddDays(1).AddHours(6);
只需在
DateTime
对象上使用Add*方法
DateTime d1 = DateTime.Now;
d1 = d1.AddDays(1).AddHours(6);
TimeSpan类有什么问题
TimeSpan timeSpan = finishDate - startDate;
for (int index = 0; index < dateList.Count; index++)
{
dateList[index] = dateList[index] + timeSpan;
}
输出:
-6.00:00:00
26.10.2010
TimeSpan类有什么问题
TimeSpan timeSpan = finishDate - startDate;
for (int index = 0; index < dateList.Count; index++)
{
dateList[index] = dateList[index] + timeSpan;
}
输出:
-6.00:00:00
26.10.2010
TimeSpan会为你工作,是的,它会记录积极和消极的方面。TimeSpan上的Duration()方法将返回一个新的TimeSpan,该TimeSpan具有原始值的绝对值(即正变化) 也就是说,通过以下几点,您不必担心正面或负面的变化:
DateTime[] dateTimeArray = {DateTime.Now};
foreach (DateTime dateTime in dateTimeArray)
{
dateTime.Add(timeSpan);
}
TimeSpan会为你工作,是的,它会记录积极和消极的方面。TimeSpan上的Duration()方法将返回一个新的TimeSpan,该TimeSpan具有原始值的绝对值(即正变化) 也就是说,通过以下几点,您不必担心正面或负面的变化:
DateTime[] dateTimeArray = {DateTime.Now};
foreach (DateTime dateTime in dateTimeArray)
{
dateTime.Add(timeSpan);
}
您可以使用LINQ和单行程序执行此操作:
datetimes = datetimes.Select ( itm => itm.AddDays ( 1 ).AddHours ( 6 ) ).ToArray ();
如果这比foreach循环更具可读性,则留给您自己决定。您可以使用LINQ使用单行程序执行此操作:
datetimes = datetimes.Select ( itm => itm.AddDays ( 1 ).AddHours ( 6 ) ).ToArray ();
如果这比foreach循环更具可读性,则留给您自己决定。没关系,但如果时间倒流了呢?时间跨度的数字为正,但应为负。我想知道我是否应该有自己的变量来表示add/substract。如果是减法,则值会翻转。d1.增加天数(-1)。增加小时(-6);是的,只是“添加”负值。这很好,但是如果时间向后移动呢?时间跨度的数字为正,但应为负。我想知道我是否应该有自己的变量来表示add/substract。如果是减法,则值会翻转。d1.增加天数(-1)。增加小时(-6);是的,只是“添加”负值。timespan是否记录时间跨度是向前还是向后?是的,timespan类实现负时间间隔。您可以很容易地检查它。timespan是否记录时间跨度是向前还是向后?是的,timespan类实现负时间间隔。你可以很容易地检查它。