c# - 将 DataGridView 中的 DateTime 列转换为本地时区
问题描述
我有一个 C# 表单应用程序,它有一个 datagridview 显示约会开始时间和约会结束时间等等。我从存储 UTC 时间的 MySQL 数据库中获取所有数据,我想将这些 UTC 时间转换为计算机的本地时区我已经尝试了下面的代码,但它似乎没有工作任何人都可以给我一些有关如何将时间转换为本地时区的建议。
private void AppointmentsDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.Value is DateTime)
{
e.Value = DateTime.SpecifyKind((DateTime)e.Value, DateTimeKind.Utc);
e.Value = TimeZoneInfo.ConvertTimeFromUtc((DateTime)e.Value, TimeZoneInfo.Local);
}
}
解决方案
您的代码看起来不错,但可以使用DateTime.ToLocalTime
if (e.Value is DateTime)
{
e.Value = ((DateTime) e.Value).ToLocalTime();
}
如果您使用的是 C# 7.0 或更高版本,则可以使用模式匹配使其更加简洁。
if (e.Value is DateTime dt)
{
e.Value = dt.ToLocalTime();
}
没有必要SpecifyKind
提前使用,除非由于某种原因该值已经错误地DateTimeKind.Local
分配给它的.Kind
属性。如果是这样,我建议在创建它的任何地方修复它,而不是在 UI 中。
推荐阅读
- .net - 忽略 sqlprojAssemblyReference.cache
- mysql - 如何根据同一数据库中另一个表的条件更新sql数据库表
- sql - 如何在子查询中使用“分组依据”?
- c# - 在 UWP 中显示主窗口的辅助窗口中心
- asp.net - 如何在 ubuntu 中使用 vs 代码安装和配置 asp.net?
- c - while 循环仅在条件为假并插入延迟时停止
- excel-formula - 根据多个搜索条件在多个列中搜索多个匹配项
- ansible - 我如何循环可能具有单个值的变量?
- java - 将 HTML 登录页面集成到 Hybris 或将 URL 重定向到另一台服务器
- javascript - 创建要加载 JSON 的订单