Click here to Skip to main content
15,915,513 members
Please Sign up or sign in to vote.
1.00/5 (1 vote)
See more:
I have seen a lot of roundup option but the code below should work am I missing something? I want it simple. Thanks



C#
<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
Posted
Updated 11-Jan-17 19:35pm
v2
Comments
Afzaal Ahmad Zeeshan 11-Jan-17 16:47pm    
And the problem is?

Do you want to simplify the code, only?

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
C#
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.
 
Share this answer
 
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
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900