Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert the "time" from DateTime into int?

I have a DataGrid which contains a few values that are in hours and I wanted to know:

How to get ONLY the time from my DataGrid and convert it into an int (or double) variable.

My goal is to do a few operations with my DataGrid time values, like to add numbers into it

EXAMPLE: Using my "dataGridView1.Rows[1].Cells[2].Value.ToString();" It'll show a DateTime value (which is inside my DataGrid), with this value, I wanna filter ONLY the time from this and convert it into an int

the part of my code which I wanna "capture" the time:

txtAtiv.Text = dataGridView1.Rows[0].Cells[1].Value.ToString(); 
string value = dataGridView1.Rows[0].Cells[2].Value.ToString(); 
lblLeft.Text = value.Split(' ')[1]; 

I wanna get the "value" (which is a DateTime value from the DataGrid) and convert it into an int.

note: - The date for me in my dataGrid it's not relevant, I only have to pick the time (and yes, I know that I can't "split" DateTime to do them separately)

like image 920
MattDAVM Avatar asked Nov 16 '25 12:11

MattDAVM


1 Answers

If you are willing to be limited to millisecond resolution, then this is fairly easy.

Given a date/time that you want to get the time part from as an int, you can get the number of milliseconds since midnight, like so:

DateTime dateTime = DateTime.Now;
int timeMsSinceMidnight = (int)dateTime.TimeOfDay.TotalMilliseconds;

If you want to reconstitute the original date and time from this, you need the original date and the time since midnight in milliseconds:

DateTime date = dateTime.Date; // Midnight.
DateTime restoredTime = date.AddMilliseconds(timeMsSinceMidnight);

Test program:

DateTime dateTime = DateTime.Now;

Console.WriteLine("Original date/time: " + dateTime );

int timeMsSinceMidnight = (int)dateTime.TimeOfDay.TotalMilliseconds;

DateTime date = dateTime.Date; // Midnight.
DateTime restoredTime = date.AddMilliseconds(timeMsSinceMidnight);

Console.WriteLine("Restored date/time: " + restoredTime);

The value returned from time.TimeOfDay is of type TimeSpan, which is convenient for storing time-of-day values.

If you want to turn your "milliseconds since midnight" back into a TimeSpan, you just do this:

var timeSpan = TimeSpan.FromMilliseconds(timeMsSinceMidnight);
like image 74
Matthew Watson Avatar answered Nov 19 '25 01:11

Matthew Watson



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!