设置DateTime格式(Set DateTime format)

2019-07-21 14:32发布

我有以下的代码 -

DateTime timeStamp;

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

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

然而,这是打破我的import语句,因为它的数据库寻找格式 -

2013-03-11 11:35:24

如何设置DateTime对象的格式?

Answer 1:

如何设置DateTime对象的格式?

你不能。 DateTime没有格式,任何超过intdouble值做。 当你想将它们转换为/从字符串, 这就是你指定的任何格式的信息。

相反,你应该使用参数化的SQL,避免转换DateTime值回字符串在首位。 这是一个普遍的最佳实践 - 不包括在你的SQL字符串值; 参数化SQL有很多好处:

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

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

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

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

  • 避免执行任何转换,你不必。 如果你确保每个系统使用正确的数据类型,尽可能,你往往不需要在所有做任何转换。
  • 需要从字符串表示转换为/,大约要消耗/产生表示非常明确的。 用于机器可读的值,即应通常用固定区域性和可能的​​自定义日期/时间格式。 对于人类可读的值,即通常应该使用用户的文化和一个标准的日期/时间格式。


Answer 2:

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

例如:

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


Answer 3:

如果传递的日期时间到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);
        }
    }
}


Answer 4:

你可以使用的ToString皈依于2013年3月11日11时35分24秒

 DateTime timeStamp;

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


Answer 5:

基本上日期没有的格式。 如果数据库parameter/fieldDatetime type你应该罚款传递的日期类型 。 它不是通过日期作为字符串是一个好主意。

但是,如果你要处理的东西,那么你最好通过日期在none culture specific date format (ISO8601或ISO)在参数化查询。 否则,你可以有不同的文化设置数据库服务器的问题。

例如,对于SQL Server,它是(转换 )安全传递日期时间在ISO8601作为;

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


Answer 6:

而如果你只是重写你的ToString()的DateTime对象的方法? 难道你不能够再选择每次使用时,你想要的格式,并且它会以您想要的方式,而不被其困扰格式化。

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

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

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

问候



文章来源: Set DateTime format