我有一个 DataGrid,其中包含一些以小时为单位的值,我想知道:
如何仅从我的 DataGrid 中获取时间并将其转换为 int(或 double )变量。
我的目标是对我的 DataGrid 时间值进行一些操作,比如向其中添加数字
例子: 使用我的“dataGridView1.Rows[1].Cells[2].Value.ToString();”它将显示一个 DateTime 值(在我的 DataGrid 中),有了这个值,我只想从中过滤时间并将其转换为 int
我想“捕获”时间的代码部分:
txtAtiv.Text = dataGridView1.Rows[0].Cells[1].Value.ToString();
string value = dataGridView1.Rows[0].Cells[2].Value.ToString();
lblLeft.Text = value.Split(' ')[1];
我想获取“值”(这是来自 DataGrid 的 DateTime 值)并将其转换为 int。
注意: - 我的 dataGrid 中的日期与我无关,我只需要选择时间(是的,我知道我不能“拆分”DateTime 来单独执行它们)
最佳答案
如果您愿意受限于毫秒分辨率,那么这很容易。
给定一个日期/时间,您希望从中获取时间部分作为 int,您可以获得自午夜以来的毫秒数,如下所示:
DateTime dateTime = DateTime.Now;
int timeMsSinceMidnight = (int)dateTime.TimeOfDay.TotalMilliseconds;
如果您想从中重构原始日期和时间,您需要原始日期和自午夜以来的毫秒数:
DateTime date = dateTime.Date; // Midnight.
DateTime restoredTime = date.AddMilliseconds(timeMsSinceMidnight);
测试程序:
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);
time.TimeOfDay
返回的值是TimeSpan
类型,方便存储时间值。
如果您想将“自午夜以来的毫秒数”变回 TimeSpan
,只需执行以下操作:
var timeSpan = TimeSpan.FromMilliseconds(timeMsSinceMidnight);
关于c# - 如何将 DateTime 的 "time"转换为 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36913659/