首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取准确的三分钟时间值

获取准确的三分钟时间值
EN

Stack Overflow用户
提问于 2012-02-15 12:17:15
回答 3查看 196关注 0票数 0

为了获取三分钟时间值(例如15.02.2012 07:00:00,15.02.2012 07:03:00,15.02.2012 07:06:00,...,15.02.2012 07:57:00),我使用以下代码:

代码语言:javascript
运行
复制
static private DateTime CurrentTime (DateTime now)
        {
            DateTime val;
            val = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, 0)
                    .AddMinutes(((now.Minute) / 3) * 3 - now.Minute);
            return val;
        }

并在下面的代码中使用它:

代码语言:javascript
运行
复制
static void Main(string[] args)
        {
            DateTime ts = new DateTime(2012, 2, 15, 08, 1, 0);
            DateTime ts1 = new DateTime(2012, 2, 15, 7, 59, 58);
            Console.WriteLine(ts.ToString("dd.MM.yyyy HH:mm:ss.fff") + " is " + CurrentTime(ts).ToString("dd.MM.yyyy HH:mm:ss.fff"));
            Console.WriteLine(ts1.ToString("dd.MM.yyyy HH:mm:ss.fff") + " is " + CurrentTime(ts1).ToString("dd.MM.yyyy HH:mm:ss.fff"));
        }

和输出:

代码语言:javascript
运行
复制
15.02.2012 08:01:00.000 is 15.02.2012 08:00:00.000
15.02.2012 07:59:58.000 is 15.02.2012 07:57:00.000

但是在第二行我搞错了- 15.02.2012 07:57:00.000必须是15.02.2012 08:00:00.000。如何纠正这个错误?谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-15 13:57:39

需要考虑秒数,如下所示:

代码语言:javascript
运行
复制
static private DateTime CurrentTime (DateTime now)
{
    return now.Date.AddSeconds((now.TimeOfDay.TotalSeconds + 90) / 180 * 180);
}
票数 0
EN

Stack Overflow用户

发布于 2012-02-15 12:35:41

这个位是错误的

代码语言:javascript
运行
复制
AddMinutes(((now.Minute) / 3) * 3 - now.Minute)

如果now.Minutes为59

59/3 = 19。

19 *3= 57

57 - 59 = -2

59 + -2 = 57 (如你所见)

看起来你想要舍入而不是截断,所以最简单的事情是在"now“上加半个3分钟。

代码语言:javascript
运行
复制
DateTime tmp = now.AddMilliseconds(90*1000);
票数 0
EN

Stack Overflow用户

发布于 2012-02-15 12:57:43

要将3分钟添加到DateTime中,您可以使用以下函数,该函数将立即将您要添加的分钟数乘以秒数:

代码语言:javascript
运行
复制
private static DateTime AddNMinutes(DateTime dateTime, int numberOfMinutes)
{
   return dateTime.AddSeconds(numberOfMinutes * 60);
}

然后使用以下命令调用它:

代码语言:javascript
运行
复制
var myDateTime = DateTime.Now;
var myDateTimePlusThreeMinutes = AddNMinutes(myDateTime, 3);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9287819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档