【发布时间】:2013-06-04 17:18:56
【问题描述】:
更新 这看起来是 Windows 7 中的一个错误。我在 Windows 8 上测试了相同的场景,但我无法在那里复制它。如果您想了解更多信息,请参阅我在此问题上发布的MS Bug Report。再次感谢所有提供帮助的人。
更新 2 该错误也发生在 Server 2008 R2 上(有点预期)
原始提交
使用下一页上的示例Date Formats 我可以控制我的日期格式。但是,我的一位客户使用 Windows 7 修改了他们的日历以显示他们的短日期,例如“ddd MM/dd/yy”,请参阅图片以了解设置。 .
这会像这样显示时钟。
这很好用,除非我在他们的机器上使用日期。当我像下面这样格式化日期时......
String.Format("{0:MM/dd/yy}", dt); //the result is 06 04 13, notice the spaces
如果我取消 ddd 以在日历设置中显示星期几并使用相同的格式选项,我会看到以下内容...
String.Format("{0:MM/dd/yy}", dt); //the result is 06/04/13, this time it has forward slashes
日期上的 .ToShortDateString() 选项显示“Tue 06/04/13”,并在进入数据库时崩溃。这就是问题的发现方式。
除了对格式进行硬编码,即将月份加入正斜杠到当天等之外,有谁知道我还能尝试什么来让它工作?
【问题讨论】:
-
听起来您正在将日期格式化为字符串,以便通过某些 SQL 将其发送。您是否考虑过为此使用命令参数而不是字符串格式?
-
+1 对迈克尔的评论。除非文本表示是您的最终目标,否则您应该避免字符串转换。
-
是的,这是一个相当古老的应用程序。它确实有一个刚刚传入的 sql 字符串。我希望避免转换为命令参数并等到我可以将其转换为 EF。这听起来确实是个好主意。我会试试看。
-
@Michael Gunter - 你的建议奏效了。如果您将其发布为答案,我会将其标记为解决方案。
标签: c# date datetime string-formatting