设置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);

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

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

我使用这个步骤

  1. 转换为日期时间
  2. 使用ToString();函数

例子:

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

如果您正在传递日期时间给sql数据库,请尝试使用yourdatetime.ToString("yyyy/MM/dd")格式,这将为您工作。

还有一件事,您可以为应用程序区域性添加日期时间格式。因此,这将处理您想要的日期时间格式。

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);
        }
    }
}

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

然而,如果您必须处理某些事情,那么您最好在参数化查询中传递 none culture specific date format (ISO8601或ISO)中的Date。否则,不同区域性设置中的数据库服务器可能会出现问题。

例如,对于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()方法呢?难道你不能选择你想要的格式,每次使用它时,它将按照你想要的方式格式化,而不会被它打扰吗?

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

然后你可以使用属性year, month, day,来创建你想要的。比如:

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

问候

相关内容

  • 没有找到相关文章

最新更新