c# - 如何将 DateTime 的 "time"转换为 int?

标签 c# wpf datetime datagrid converters

我有一个 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/

相关文章:

c# - 为 asp.net 网站运行简单的脚本

c# - 获取 umbraco 选项卡上的所有属性

javascript - 将 get 请求中的日期时间与 JavaScript 中的当前日期时间进行比较

ruby-on-rails - Rails - 将 DateTime 与 DateTime.now 进行比较

mysql - 如何生成随机 unix 时间戳 mysql

c# - 配置 Identity Server 以使用 ASP.NET Identity 角色

c# - 如何使用按位运算符和枚举生成动态表达式?

wpf - 当文本框通过选项卡聚焦时光标不显示

c# - WPF 货币符号

c# - 将 inkCanvas 中的图像保存为 png 或 jpeg 文件