C#将日期从字符串转换为日期格式

use*_*986 -1 c# sql sql-server datetime date

我有DateTime.ParseExtract的问题.错误是String was not recognized as a valid DateTime.

sqlserver 2012中的trialDate定义为folllow type = date,它以MM/dd/yyyy格式显示.我想这是sqlserver的默认设置.我不知道如何以及在何处将其更改为dd/MM/yyyy或dd-MM-yyyy.

当我在listview中显示日期时,我做了这个(戴上面具):'

这是C#代码隐藏

    string sTrialDate = "";
    foreach (ListViewDataItem item in ListView1.Items)
    {
       CheckBox MyCheckBox = (CheckBox)item.FindControl("MyCheckBox");
       if (MyCheckBox.Checked) 

       {
           Label myTrialDate = (Label)item.FindControl("trialDatelbl");
           sTrialDate = myTrialDate.Text;
       }
    }
Run Code Online (Sandbox Code Playgroud)

问题是DATETIME.ParseExtract,这是我到目前为止所尝试的:

   DateTime dt = DateTime.ParseExact("sTrialDate", "MM/dd/yyyy",   
           System.Globalization.CultureInfo.InvariantCulture);    <=== not working

   DateTime dt = DateTime.ParseExact("sTrialDate", "dd/MM/yyyy",   
           System.Globalization.CultureInfo.InvariantCulture);    <=== not working

   DateTime dt = DateTime.ParseExact("sTrialDate", "dd/MM/yyyy ",   
           System.Globalization.CultureInfo.InvariantCulture);    <=== not working

   DateTime dt = DateTime.ParseExact(Request.QueryString["sTrialDate"], "dd/MM/yyyy", null);              
                                                                                <==not working
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 6

你似乎在滥用ParseExact.你在做:

ParseExact("sDateRdv", "MM/dd/yyyy")
Run Code Online (Sandbox Code Playgroud)

哪个尝试将字符串解析sDateRdv为日期并且明显失败.如果sDateRdv是包含您的日期的变量,那么您应该使用:

ParseExact(sDateRdv, "MM/dd/yyyy")
Run Code Online (Sandbox Code Playgroud)

在上一个例子中,你应该检查它的值Request.QueryString["sTrialDate"]是什么.它是一个有效的日期字符串吗?

最后,您将讨论sqlserver中的日期以及如何更改其表示形式.答案是你不是真的.日期是日期,与其显示方式无关.当你看它时,它将被转换为一个人类可读的字符串(因为这是我们所读到的),但这并不代表它的存储方式.您可以将它视为一个完整的日期(因此将其从数据库中转换为您的C#代码DateTime)并且您只需将其转换为字符串以进行显示或者可能是某种类型的序列化(例如XML).