1

我要在运行时填写一个 ddl。

我真正需要做的是从系统中获取当前时间(以 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");

有人可以告诉我,要么我必须编写所有逻辑,要么 DateTime 可以提供一些功能来像这样格式化它?

4

4 回答 4

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");
于 2013-04-04T09:02:24.057 回答
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);
于 2013-04-04T09:04:19.947 回答
1

DateTime在 C# 中,有一个向当前DateTime对象添加任何增量的功能。这里是对分钟的具体功能的参考。

于 2013-04-04T09:04:52.570 回答
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);
于 2013-04-04T09:08:42.153 回答