我有以下代码 -
DateTime timeStamp;
timeStamp = System.Convert.ToDateTime(y.InnerText);
y.InnerText
在哪里11/03/2013 11:35:24
。
但是,这破坏了我的导入语句,因为数据库正在寻找格式-
2013-03-11 11:35:24
如何设置 DateTime 对象的格式?
如何设置 DateTime 对象的格式?
你不能。DateTime
values 没有格式,就像orint
valuesdouble
一样。当您想将它们转换为字符串/从字符串转换时,您可以在其中指定任何格式信息。
相反,您应该使用参数化 SQL 并避免DateTime
首先将值转换回字符串。这是一般的最佳实践——不要在 SQL 字符串中包含值;参数化 SQL 有很多好处:
我还建议Convert.ToDateTime
您在解析时指定预期格式,而不是使用 . 例如:
timeStamp = DateTime.ParseExact(y.InnerText,
"dd/MM/yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
基本上,我尝试应用的两条规则是:
我用这一步
例子 :
DateTime myDateTime = DateTime.Now;
string myDateTimeString = myDateTime.ToString("yyyy-MM-dd hh:mm:ss");
如果您将日期时间传递给 sql 数据库,请尝试使用 yourdatetime.ToString("yyyy/MM/dd") 格式,这对您有用。
还有一件事,您可以为您的 Applicaton 文化添加日期时间格式。所以这将根据您的需要对待您的日期时间格式。
using System;
using System.Globalization;
using System.Threading;
namespace test {
public static class Program {
public static void Main() {
CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd HH:mm:ss";
culture.DateTimeFormat.LongTimePattern = "";
Thread.CurrentThread.CurrentCulture = culture;
Console.WriteLine(DateTime.Now);
}
}
}
基本上日期没有格式。如果数据库parameter/field
是Datetime type
您应该可以作为 Date 类型传递。将日期作为字符串传递不是一个好主意。
但是,如果您必须处理这些事情,那么您最好none culture specific date format
在参数化查询中将日期传递给(ISO8601 或 ISO)。否则,您可能会在不同的文化设置中遇到数据库服务器问题。
例如,对于 sql server,在 ISO8601 中传递日期时间是安全的(在转换中);
'yyyy-mm-ddThh:mi:ss.mmm' //(no spaces)
您可以使用 ToString 转换为 2013-03-11 11:35:24
DateTime timeStamp;
timeStamp = System.Convert.ToDateTime(y.InnerText).ToString("yyyy-MM-dd HH:mm:ss");
如果您只是覆盖 DateTime 对象的 ToString() 方法怎么办?难道你不能选择你想要的格式,每次使用它时,它都会按照你想要的方式格式化,而不会被它打扰。
这只是一个想法,所以我不知道是否有更好的解决方案。
然后,您可以使用属性年、月、日,按照您的意愿构建它。就像是:
public override ToString(){
return this.Year + "-" + this.Month + "-" + this.Day;
}
问候