设置DateTime格式

时间:2013-03-14 11:06:57

标签: c# datetime format

我有以下代码 -

DateTime timeStamp;

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

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

然而,由于数据库正在寻找格式 -

,这打破了我的import语句
2013-03-11 11:35:24

如何设置DateTime对象的格式?

6 个答案:

答案 0 :(得分:17)

  

如何设置DateTime对象的格式?

你做不到。 DateTime不具有格式,不超过intdouble值。当您想要将它们转换为字符串或从字符串转换时, 指定任何格式信息。

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

  • 避免SQL injection attacks
  • 避免像这样的转换问题
  • 它使您的代码(SQL)与您的数据(参数值)分开

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

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

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

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

答案 1 :(得分:2)

我使用这一步 1.转换为DateTime。 2.使用 ToString(); 功能

示例:

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

 DateTime timeStamp;

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

答案 4 :(得分:0)

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

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

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

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

答案 5 :(得分:0)

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

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

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

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

问候