设置DateTime格式

我有以下代码 –

DateTime timeStamp; timeStamp = System.Convert.ToDateTime(y.InnerText); 

y.InnerText11/03/2013 11:35:24

然而,由于数据库正在寻找格式,这打破了我的import语句 –

 2013-03-11 11:35:24 

如何设置DateTime对象的格式?

如何设置DateTime对象的格式?

你不能。 DateTime值没有格式,只有intdouble值。 当您想要将它们转换为字符串/从字符串转换时,您可以在其中指定任何格式信息。

相反,您应该使用参数化SQL并避免首先将DateTime值转换回字符串。 这是一般的最佳实践 – 不要在SQL字符串中包含值; 参数化SQL有许多好处:

  • 它避免了SQL注入攻击
  • 它避免了像这样的转换问题
  • 它使您的代码(SQL)与您的数据(参数值)分开

建议您在解析时指定预期的格式,而不是使用Convert.ToDateTime 。 例如:

 timeStamp = DateTime.ParseExact(y.InnerText, "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture); 

基本上,我尝试应用的两条规则是:

  • 避免在您不需要的情况下执行任何转换。 如果您确保每个系统尽可能使用正确的数据类型,则通常不需要进行任何转换。
  • 在需要转换为字符串表示的位置时,要非常明确地表示要使用/生成的表示。 对于机器可读的值,通常应使用不变文化和可能的自定义日期/时间格式。 对于人类可读的值,通常应该使用用户的文化和标准的日期/时间格式。

如果您将日期时间传递给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); } } } 

我使用此步骤1.转换为DateTime。 2.使用ToString(); function

示例:

  DateTime myDateTime = DateTime.Now; string myDateTimeString = myDateTime.ToString("yyyy-mm-dd hh:mm:ss"); 

你可以使用ToString转换到2013-03-11 11:35:24

  DateTime timeStamp; timeStamp = System.Convert.ToDateTime(y.InnerText).ToString("yyyy-MM-dd HH:mm:ss"); 

基本上日期没有格式。 如果数据库parameter/fieldDatetime type ,则应该作为Date类型传递 。 将日期作为字符串传递不是一个好主意。

但是,如果您需要处理这些事情,那么最好在参数化查询中以非none culture specific date format (ISO8601或ISO)传递日期。 否则,您可能会遇到不同文化设置中的数据库服务器问题。

例如,对于sql server,在ISO8601中传递日期时是安全的( 在转换中 );

 'yyyy-mm-ddThh:mi:ss.mmm' //(no spaces) 

如果你只是覆盖DateTime对象的ToString()方法怎么办? 你不能选择你想要的格式,每次使用它时,它都会按照你想要的方式进行格式化,而不会受到它的困扰。

这只是一个想法,所以我不知道是否有更好的解决方案。

然后,您可以使用属性年,月,日来构建它,就像您想要的那样。 就像是:

 public override ToString(){ return this.Year + "-" + this.Month + "-" + this.Day; } 

问候