我如何计算秒数 [英] How do I roundup seconds

查看:101
本文介绍了我如何计算秒数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看过很多综合选项,但下面的代码应该可以解决,我错过了什么?我想要简单。谢谢







I have seen a lot of roundup option but the code below should work am I missing something? I want it simple. Thanks



<pre> if (calculated_start_time.Second >= 30)
                    Delivery_time = calculated_start_time.AddMinutes(1).ToString("HH:mm:ss");
                else

                    Delivery_time = calculated_start_time.ToString("HH:mm:ss");





我尝试了什么:



综合选项的变化

互联网



What I have tried:

Variations of Roundup options
Internet

推荐答案

既然您还显示秒数(... ToString(HH:mm:ss)),您可能还需要将秒数设置为零,否则您只需将分钟移动。



考虑以下因素

Since you're also displaying the seconds (...ToString("HH:mm:ss")), you probably also need to set the seconds to zero otherwise you just shift the minute.

Consider the following
System.DateTime time = new DateTime(2017, 1, 11, 23, 35, 28);

for (int counter = 0; counter < 70; counter++) {
   // increment time
   time = time.AddSeconds(1);
   // print the rounded time
   Console.WriteLine( string.Format("Original time {0}, rounded time {1}",
      time.ToLongTimeString(),
      time.AddMinutes(time.Second < 30 ? 0 : 1)
          .AddSeconds(time.Second * -1).ToLongTimeString()));
}



输出结果如下


The output would be like following

Original time 23:35:29, rounded time 23:35:00
Original time 23:35:30, rounded time 23:36:00
Original time 23:35:31, rounded time 23:36:00
Original time 23:35:32, rounded time 23:36:00
Original time 23:35:33, rounded time 23:36:00
Original time 23:35:34, rounded time 23:36:00
Original time 23:35:35, rounded time 23:36:00
Original time 23:35:36, rounded time 23:36:00
Original time 23:35:37, rounded time 23:36:00
Original time 23:35:38, rounded time 23:36:00
Original time 23:35:39, rounded time 23:36:00
Original time 23:35:40, rounded time 23:36:00
Original time 23:35:41, rounded time 23:36:00
Original time 23:35:42, rounded time 23:36:00
Original time 23:35:43, rounded time 23:36:00
Original time 23:35:44, rounded time 23:36:00
Original time 23:35:45, rounded time 23:36:00
Original time 23:35:46, rounded time 23:36:00
Original time 23:35:47, rounded time 23:36:00
Original time 23:35:48, rounded time 23:36:00
Original time 23:35:49, rounded time 23:36:00
Original time 23:35:50, rounded time 23:36:00
Original time 23:35:51, rounded time 23:36:00
Original time 23:35:52, rounded time 23:36:00
Original time 23:35:53, rounded time 23:36:00
Original time 23:35:54, rounded time 23:36:00
Original time 23:35:55, rounded time 23:36:00
Original time 23:35:56, rounded time 23:36:00
Original time 23:35:57, rounded time 23:36:00
Original time 23:35:58, rounded time 23:36:00
Original time 23:35:59, rounded time 23:36:00
Original time 23:36:00, rounded time 23:36:00
Original time 23:36:01, rounded time 23:36:00
Original time 23:36:02, rounded time 23:36:00
Original time 23:36:03, rounded time 23:36:00
Original time 23:36:04, rounded time 23:36:00
Original time 23:36:05, rounded time 23:36:00
Original time 23:36:06, rounded time 23:36:00
Original time 23:36:07, rounded time 23:36:00
Original time 23:36:08, rounded time 23:36:00
Original time 23:36:09, rounded time 23:36:00
Original time 23:36:10, rounded time 23:36:00
Original time 23:36:11, rounded time 23:36:00
Original time 23:36:12, rounded time 23:36:00
Original time 23:36:13, rounded time 23:36:00
Original time 23:36:14, rounded time 23:36:00
Original time 23:36:15, rounded time 23:36:00
Original time 23:36:16, rounded time 23:36:00
Original time 23:36:17, rounded time 23:36:00
Original time 23:36:18, rounded time 23:36:00
Original time 23:36:19, rounded time 23:36:00
Original time 23:36:20, rounded time 23:36:00
Original time 23:36:21, rounded time 23:36:00
Original time 23:36:22, rounded time 23:36:00
Original time 23:36:23, rounded time 23:36:00
Original time 23:36:24, rounded time 23:36:00
Original time 23:36:25, rounded time 23:36:00
Original time 23:36:26, rounded time 23:36:00
Original time 23:36:27, rounded time 23:36:00
Original time 23:36:28, rounded time 23:36:00
Original time 23:36:29, rounded time 23:36:00
Original time 23:36:30, rounded time 23:37:00
Original time 23:36:31, rounded time 23:37:00
Original time 23:36:32, rounded time 23:37:00
Original time 23:36:33, rounded time 23:37:00
Original time 23:36:34, rounded time 23:37:00
Original time 23:36:35, rounded time 23:37:00
Original time 23:36:36, rounded time 23:37:00
Original time 23:36:37, rounded time 23:37:00
Original time 23:36:38, rounded time 23:37:00



当然输出受我的语言环境设置的影响,所以如果你需要固定格式,那么使用自定义格式模型是可行的。


Of course the output is affected by my locale settings so if you need to have fixed format, then it's feasible to use custom format model.


如果我理解你正确的,你想要在第二个到第二个分钟时将它向上舍入为30或更多,因为你只需要将剩下的第二个加到从60秒减去第二分钟。例如:

If I understand you correctly, you want to round up the second to the next minute when it is 30 or more, for that you just need to add the remaining second to the next minute by subtracting that second from 60 seconds. For example:
using System;
					
public class Program
{
	public static void Main()
	{
		DateTime startDateTime = DateTime.Now;
				
		Console.WriteLine("Before rounding: " +  startDateTime.ToString("HH:mm:ss"));
		
		DateTime delivery_time = startDateTime;  
		int second = startDateTime.Second;
		if( second >= 30)
		{
			delivery_time = startDateTime.AddSeconds(60-second);
			
		}
		
		Console.WriteLine("After rounding : " + delivery_time.ToString("HH:mm:ss"));
		
	}
}

以及示例结果:

and the example outcomes:

Before rounding: 06:28:38
After rounding : 06:29:00

Before rounding: 06:29:04
After rounding : 06:29:04


这篇关于我如何计算秒数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆