Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DateTime.Parse正在从DataRow中删除毫秒?_C#_String_Datetime_Parsing - Fatal编程技术网

C# DateTime.Parse正在从DataRow中删除毫秒?

C# DateTime.Parse正在从DataRow中删除毫秒?,c#,string,datetime,parsing,C#,String,Datetime,Parsing,我在SQL Server中有一个名为EntryTime的DATETIME字段,其值为2020-11-04 18:55:19.437。如您所见,毫秒元素的值为437。但是,如果我从我的DataRow解析此值: DateTime entryTime = DateTime.MinValue; if (row["EntryTime"] != DBNull.Value) entryTime = DateTime.Parse(row["EntryTime"]?

我在SQL Server中有一个名为
EntryTime
DATETIME
字段,其值为
2020-11-04 18:55:19.437
。如您所见,毫秒元素的值为
437
。但是,如果我从我的
DataRow
解析此值:

DateTime entryTime = DateTime.MinValue;
if (row["EntryTime"] != DBNull.Value)
    entryTime = DateTime.Parse(row["EntryTime"]?.ToString());
然后我得到除毫秒值以外的所有值

我在这里的假设是
.ToString()
正在降低毫秒数,我已经在即时窗口中确认:



为什么要删除毫秒?

之所以删除毫秒,是因为
.ToString()
特别是在
DateTime
对象上的工作方式。根据
DateTime.ToString()
(我的重点):

ToString() - 将当前DateTime对象的值转换为其等效值 使用 当前文化

这里,
行[“EntryTime”]
是一个
对象
,但更重要的是,它是一个装箱的
日期时间

DateTime entryTime = DateTime.MinValue;
if (row["EntryTime"] != DBNull.Value)
    entryTime = (DateTime)row["EntryTime"];

因此,无需将其转换为字符串,然后对其进行解析。实际上,您应该确保
行[“EntryTime”]
的值不是
DBNull.value
,然后通过显式强制转换为
DateTime
,取消对值的装箱:

DateTime entryTime = DateTime.MinValue;
if (row["EntryTime"] != DBNull.Value)
    entryTime = (DateTime)row["EntryTime"];
这将为您提供
DateTime
对象,该对象的
毫秒
属性仍然有效:


什么是
它不会直接转换成
日期时间
?@ssaPøngjǣrdenlarp更新了我的问题,指出它是一个
数据行
,我在研究过程中了解到它已经被直接转换了,这就是
.ToString()的原因
减少了毫秒数。提议的复制品完全解决了另一个问题,仅通过受过教育的推理暗示了这个问题的答案,这使得未来的读者不清楚。