我有以下代码 -
DateTime timeStamp;
timeStamp = System.Convert.ToDateTime(y.InnerText);
y.InnerText
为11/03/2013 11:35:24
。
然而,由于数据库正在寻找格式 -
,这打破了我的import语句2013-03-11 11:35:24
如何设置DateTime对象的格式?
答案 0 :(得分:17)
如何设置DateTime对象的格式?
你做不到。 DateTime
值不具有格式,不超过int
或double
值。当您想要将它们转换为字符串或从字符串转换时, 指定任何格式信息。
相反,您应该使用参数化SQL并避免首先将DateTime
值转换回字符串。这是一般的最佳实践 - 不要在SQL字符串中包含值;参数化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/field
为Datetime 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;
}
问候