Datetime的Datetime格式.现在函数显示不同的日期时间格式从系统日期时间格式

本文关键字:格式 Datetime 日期 时间 系统 显示 函数 | 更新日期: 2023-09-27 18:09:47

我正在使用位于windows server 2008 R2操作系统的windows server中的ASP.NET & C#应用程序,我使用的服务器是VM。我将我的windows日期时间格式更改为"en-US"和我的SQL服务器日期时间格式,区域设置日期时间格式显示为"MM/dd/yyyy",但在我用c#开发的。net应用程序中,在调试模式下显示DateTime.Now的日期时间格式为"dd/MM/yyyy",因此我无法将数据保存到SQL数据库,它抛出异常"invalid datetime format"。如果有人能帮助我如何改变DatetTime的日期时间格式的想法,我将不胜感激。现在在我的应用程序中。

下面是代码片段-呼叫部分-

saveCustomerInfo.saveInfo(txtCustomerId.Text, userNmae, objProperties.ProposalNumber.ToString(), "", "", Total_Amount, SERVICE_TAX, STAMP_DUTY, AgentID, DateTime.Now, null, null, "", "", "", product_code, MODE)

被调用函数签名是-

public void saveInfo(string CustomerID, string UserName, string ProposalNo, string PaymentID, string PolicyNumber, int amount, double serviceTax, double stampduty, string Agent_ID, DateTime? ProposalDate, DateTime? PaymentDate, DateTime? PolicyDate, string ClaimNo, string ClaimAmount, string ClaimStatus, int ProductCode, string mode)

sql Code部分是:

public void saveInfo(string CustomerID, string UserName, string ProposalNo, string PaymentID, string PolicyNumber, int amount, double serviceTax, double stampduty, string Agent_ID, DateTime? ProposalDate, DateTime? PaymentDate, DateTime? PolicyDate, string ClaimNo, string ClaimAmount, string ClaimStatus, int ProductCode, string mode)
    {
        string connection = SetConnectionString(SPContext.Current.Site);
        SqlConnection con = new SqlConnection(connection);
        SqlCommand com = new SqlCommand("Select count(ProposalNo) from [aspnetdb].[dbo].[user_info_log] where ProposalNo = '" + ProposalNo + "'", con);
        con.Open();
        Int32 count = (Int32)com.ExecuteScalar();
        if (count == 0)
        {
            //string strFormattedProposalDate = ProposalDate.ToString().Split('/')[1] + "/" + ProposalDate.ToString().Split('/')[0] + "/" + ProposalDate.ToString().Split('/')[2];
            com.Dispose();
            com = new SqlCommand("insert into user_info_log(CustomerID,UserName,ProposalNo,PaymentID,PolicyNo,TotalAmount,ServiceTax,Stampduty,Agent_ID,ProposalDate,PaymentDate,PolicyDate,ClaimNumber,ClaimAmount,ClaimStatus,ProductCode,Mode) VALUES('" + CustomerID + "','" + UserName + "','" + ProposalNo + "','" + PaymentID + "','" + PolicyNumber + "','" + amount + "','" + serviceTax + "','" + stampduty + "','" + Agent_ID + "','" + ProposalDate + "','" + System.DBNull.Value + "','" + System.DBNull.Value + "','" + ClaimNo + "','" + ClaimAmount + "','" + ClaimStatus + "','" + ProductCode + "','" + mode + "')", con);
            com.ExecuteNonQuery();
        }
        con.Close();
        com.Dispose();
    }

错误码为:将varchar数据类型转换为日期时间数据类型会导致超出范围的值。语句已终止

Datetime的Datetime格式.现在函数显示不同的日期时间格式从系统日期时间格式

您需要更改应用程序中使用的文化。将此添加到web的system.web部分。配置:<globalization culture="en-US" />此外,如果您不想更改所有应用程序的默认区域性,您可以将en-US区域性传递给DateTime.ToString方法:var str = DateTime.Now.ToString(CultureInfo.GetCultureInfo("en-US"))

除此之外,将DateTime值作为字符串发送到数据库是绝对错误的方法。考虑在sql命令http://csharp-station.com/Tutorial/AdoDotNet/Lesson06中使用参数这样就不用将DateTime转换为字符串

then try

this.TextBox3.Text = DateTime.Now.ToString("MM.dd.yyyy");

或者试试这个......

string format = "MM/dd/yyyy hh:mm:ss.fff";
DateTime d = DateTime.ParseExact("05/15/2012 10:09:28.650",
                                format,
                                System.Globalization.CultureInfo.InvariantCulture)