2013-04-04 99 views
1

我将在运行时填写ddl。如何形成此DateTime逻辑以将当前时间增加45分钟

我真正需要做的是从系统中获取当前时间(24小时格式)。 然后我需要将它舍入到15分钟的时间段,所以如果时间是13:23它将变成13:30;如果它是13:12那么它应该变成13:15

然后我想给它增加45分钟,并且13:15变成14:00。

我想实现像这样

DateTime d = DateTime.Now; 
string hr = d.ToString("HH:mm"); 
string mi = d.ToString("mm"); 

可能有人说,无论是我必须写所有的逻辑或日期时间可以提供一些功能 像这种格式呢?

+1

这应该让你开始http://stackoverflow.com/questions/7029353/c-sharp-round-up-time-to-nearest-x-minutes,一旦你得到舍入部分,你有' AddMinutes'可用 – V4Vendetta 2013-04-04 09:03:14

回答

2

我想这应该为你做的伎俩:

var d = DateTime.Now; 
d = d.AddSeconds(-d.Seconds).AddMilliseconds(-d.Milliseconds) 

if (d.Minute < 15) { d.AddMinutes(15 - d.Minute); } 
else if (d.Minute < 30) { d = d.AddMinutes(30 - d.Minute); } 
else if (d.Minute < 45) { d = d.AddMinutes(45 - d.Minute); } 
else if (d.Minute < 60) { d = d.AddMinutes(60 - d.Minute); } 

d = d.AddMinutes(45); 
+1

也许第一个'd = d.AddSeconds(-d.Seconds).AddMilliseconds(-d.Milliseconds)'重置这些部分? – 2013-04-04 09:09:48

+1

@HansKesting,这可能是一个很好的重置。我会补充一点,谢谢你的想法! – 2013-04-04 09:10:52

2
 DateTime d = DateTime.Now; 

     //Add your 45 minutes 
     d = d.AddMinutes(45); 

     //Add minutes to the next quarter of an hour 
     d = d.AddMinutes((15 - d.TimeOfDay.Minutes % 15) % 15); 

     //Show your result 
     string hr = d.ToString("HH:mm"); 
     string mi = d.ToString("mm"); 
+0

您的代码将分钟添加到下一刻的小时内是错误的。当分钟数为0时,尽管已经有四分之一了,但它仍然会增加15。 – JustAnotherUserYouMayKnow 2013-04-04 09:11:58

+0

谢谢你纠正它。这比我的解决方案还要好。 :-) – JustAnotherUserYouMayKnow 2013-04-04 09:14:08

+0

你是对的,为0的情况增加了一个修复。 – Peter 2013-04-04 09:14:18

1

DateTime在C#中有添加任何增量当前DateTime对象的函数。 Here是对分钟的特定功能的参考。

1
DateTime d = DateTime.Now; 

DateTime rounded; 
if(d.Minute % 15 ==0)rounded = d; 
else DateTime rounded = d.AddMinutes(15 - d.Minute % 15); 

Console.WriteLine("{0:HH:mm}",rounded); 
+0

10:00将随着你的代码变成10:15。 – JustAnotherUserYouMayKnow 2013-04-04 09:11:20

+0

难道不是15到30轮? – 2013-04-04 09:13:42

+0

你是对的。我在编辑它 – Arie 2013-04-04 09:15:35

相关问题