在c#中从字符串解析为DateTime的日期

-2 c# sql-server datetime

我将日期值("24/11/2016")从excel文件导出到C#.NET中的SQL数据库表.我在我的函数中使用以下代码来解析从字符串到Datetime的日期值.但它没有用.我尝试调试它,但是当它出现在那条线上时,它就会终止.有人知道是什么问题.

var date = row["Date"].ToString();

DateTime dates;    
string format = "MM-dd-yyyy";

if (!DateTime.TryParseExact(date, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dates))
{ 
  continue;
}                           
else
{
   dates = DateTime.Parse(date); //terminating at this line
}
Run Code Online (Sandbox Code Playgroud)

Adi*_*dil 6

您的格式应该是dd-MM-yyyy因为你有24/11/2016日期,你可以了解更多有关此MSDN文章字符串格式自定义日期和时间格式字符串

更改

string format = "MM-dd-yyyy";
Run Code Online (Sandbox Code Playgroud)

string format = "dd-MM-yyyy";
Run Code Online (Sandbox Code Playgroud)

根据OP的注释进行编辑 - 在SQL Server中存储格式化日期

DateTime以标准格式存储在SQL服务器中,实际上并不是我们看到的表示格式,如"dd-MM-yyy".本文解决了Datetime Mystery解释了内部SQL服务器格式.

摘自解决日期时间之谜

那么SQL Server如何在内部存储日期?它使用8个字节来存储日期时间值 - 日期的前4个和时间的第4个.SQL Server可以将两个4字节集合解释为整数.对于日期部分,SQL Server存储的值是基准日期1900年1月1日之前或之后的天数.由于此存储协议,SQL Server假定日期为1900年1月1日,当时我没有提供我的第一个例子中的日期.SQL Server内部存储的值为0.负数表示早于1900年1月1日的日期.

SQL Server将时间的第二个整数存储为午夜后的时钟周期数.第二个包含300个刻度,因此刻度等于3.3毫秒(ms).您可以通过将日期时间值转换为二进制(8)值并使用子字符串函数提取每组4个字节来查看天和时钟滴答的值.然后,图3中的代码将每组4个字节转换为整数.