计算日期之间的分钟差
本文关键字:分钟 之间 日期 计算 | 更新日期: 2023-09-27 18:02:02
我有以下代码:
DateTime pickerDate = Convert.ToDateTime(pickerWakeupDate.SelectedDate);
string enteredStr = pickerDate.ToShortDateString() + " " + textWakeupTime.Text;
string format = "dd/M/yyyy HH:mm";
DateTime enteredDate = DateTime.ParseExact(enteredStr, format, null);
我面临的问题是,我想计算设定日期和现在的日期和时间之间的差异。然后,这个值需要为我提供一个日期之间有多少分钟的值。
我试着使用:
DateTime todaysDateTime = DateTime.Now;
TimeSpan span = enteredDate.Subtract(todaysDateTime);
int totalMins = span.Minutes;
但是,当值提前10分钟设置时,这给了我一个不正确的值0
。
谁能帮我解决这个问题?
谢谢。
我认为你真正想要的是span.TotalMinutes
(我不能告诉你有多少次我在TimeSpan类上被逮住了!)
时间间隔。Minutes -"获取由当前TimeSpan结构表示的时间间隔的分钟组件。"
时间间隔。TotalMinutes—"获取以整分钟和小数分钟表示的当前TimeSpan结构的值。"
我尝试扩展它解决超过分钟,你可以改善它:
public enum eTimeFragment
{
hours,
minutes,
seconds,
milliseconds
}
public static long DiferenceIn(this DateTime dtOrg, DateTime Diff, eTimeFragment etf = eTimeFragment.minutes)
{
long InTicks = 1;
switch (etf)
{
case eTimeFragment.hours:
InTicks = DateTime.MinValue.AddHours(1).Ticks;
break;
case eTimeFragment.seconds:
InTicks = DateTime.MinValue.AddSeconds(1).Ticks;
break;
case eTimeFragment.milliseconds:
InTicks = DateTime.MinValue.AddMilliseconds(1).Ticks;
break;
case eTimeFragment.minutes:
default:
InTicks = DateTime.MinValue.AddMinutes(1).Ticks;
break;
}
if (dtOrg > Diff)
return dtOrg.AddTicks(Diff.Ticks * -1).Ticks / InTicks;
else
return Diff.AddTicks(dtOrg.Ticks * -1).Ticks / InTicks;
}
使用它,例如在调试控制台:
DateTime fromDate = DateTime.Now;
//Default is Minutes fragment
fromDate.DiferenceIn(fromDate.AddHours(4))
240
fromDate.DiferenceIn(fromDate.AddHours(50))
3000
fromDate.DiferenceIn(fromDate.AddDays(1))
1440
fromDate.DiferenceIn(fromDate.AddDays(1),WGTS_Extensions.eTimeFragment.hours)
24
fromDate.DiferenceIn(fromDate.AddDays(1),WGTS_Extensions.eTimeFragment.seconds)
86400
fromDate.DiferenceIn(fromDate.AddHours(1),WGTS_Extensions.eTimeFragment.seconds)
3600