【发布时间】:2017-11-13 04:30:24
【问题描述】:
当我在 c# 中运行以下代码时
string dt = "2017-07-09T17:50:21.000-0500";
string date = DateTimeOffset.Parse(dt).DateTime.ToString("yyyy-MM-dd HH:mm");
它把这个作为输出
2017-07-09 17:50
但是在将其插入数据库时,它会增加 +5 小时的时间并插入为
2017-07-09 22:50
有人可以帮我将相同的日期(2017-07-09 17:50)插入数据库
更新 1
这是我完整的简化代码
DataSet dSet = new DataSet();
DataTable dTable = new DataTable();
dTable.Columns.Add("created_on", typeof(DateTime));
foreach (var item in items)
{
DataRow dRow = dTable.NewRow();
dRow["created_on"] = DateTimeOffset.Parse(item.createdon).DateTime;
//-- in item.createdon i get the date like this "2017-07-09T17:50:21.000-0500";
dSet.Tables[0].Rows.Add(dRow);
}
完成循环后,通过存储过程将数据以xml的形式发送到数据库进行插入。
在数据库中插入后,该行将更新为以下日期
2017-07-09 22:50
【问题讨论】:
-
因为您可能将其插入到具有
datetime列而不是字符串的表中,请显示相关代码。最好的选择是一些时区转换问题,但很难用这么少的信息来判断。 -
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
-
您能告诉我们服务器所在的时区与您所在的时区吗?您要插入的列的数据类型是什么?
-
可以发一下你的sql代码吗?
-
“通过存储过程作为 xml” > 这将是有趣的部分。到目前为止,您给出的代码无法重现问题,
DateTimeOffset.Parse的文档指定部件之间应该有一个空格,但它仍然适用于您的示例数据,最终以dSet为 2017-07- 09 17:50:21.000
标签: c# sql-server date datetime