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数据类型转换为日期时间数据类型会导致超出范围的值。语句已终止
您需要更改应用程序中使用的文化。将此添加到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)