我有以下的代码 -
DateTime timeStamp;
timeStamp = System.Convert.ToDateTime(y.InnerText);
其中y.InnerText
是11/03/2013 11:35:24
。
然而,这是打破我的import语句,因为它的数据库寻找格式 -
2013-03-11 11:35:24
如何设置DateTime对象的格式?
我有以下的代码 -
DateTime timeStamp;
timeStamp = System.Convert.ToDateTime(y.InnerText);
其中y.InnerText
是11/03/2013 11:35:24
。
然而,这是打破我的import语句,因为它的数据库寻找格式 -
2013-03-11 11:35:24
如何设置DateTime对象的格式?
如何设置DateTime对象的格式?
你不能。 DateTime
值没有格式,任何超过int
或double
值做。 当你想将它们转换为/从字符串, 这就是你指定的任何格式的信息。
相反,你应该使用参数化的SQL,避免转换DateTime
值回字符串在首位。 这是一个普遍的最佳实践 - 不包括在你的SQL字符串值; 参数化SQL有很多好处:
我也建议,而不是使用Convert.ToDateTime
,你解析时注明您预期的格式。 例如:
timeStamp = DateTime.ParseExact(y.InnerText,
"dd/MM/yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
基本上,两个规则我尝试应用有:
我用这个步骤1转换为DateTime。 2.使用的ToString(); 功能
例如:
DateTime myDateTime = DateTime.Now;
string myDateTimeString = myDateTime.ToString("yyyy-mm-dd hh:mm:ss");
如果传递的日期时间到SQL数据库yourdatetime.ToString尝试(“YYYY / MM / DD”)格式这会为你工作。
还有一件事你能为你的一个应用文化添加datetime格式。 所以在你的愿望,这将对待你的日期时间格式。
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);
}
}
}
你可以使用的ToString皈依于2013年3月11日11时35分24秒
DateTime timeStamp;
timeStamp = System.Convert.ToDateTime(y.InnerText).ToString("yyyy-MM-dd HH:mm:ss");
基本上日期没有的格式。 如果数据库parameter/field
是Datetime type
你应该罚款传递的日期类型 。 它不是通过日期作为字符串是一个好主意。
但是,如果你要处理的东西,那么你最好通过日期在none culture specific date format
(ISO8601或ISO)在参数化查询。 否则,你可以有不同的文化设置数据库服务器的问题。
例如,对于SQL Server,它是(转换 )安全传递日期时间在ISO8601作为;
'yyyy-mm-ddThh:mi:ss.mmm' //(no spaces)
而如果你只是重写你的ToString()的DateTime对象的方法? 难道你不能够再选择每次使用时,你想要的格式,并且它会以您想要的方式,而不被其困扰格式化。
这仅仅是一个想法,所以我不知道是否有更好的解决方案或没有。
然后,您可以使用属性的年,月,日,来构建它就像你想要的。 就像是:
public override ToString(){
return this.Year + "-" + this.Month + "-" + this.Day;
}
问候