使用DateTime在C#中进行文化转换

时间:2009-11-23 07:58:18

标签: sql datetime culture

我无法让我的ASPX-App在高效的服务器上运行。由于我的本地环境是德语,但服务器是英语,我的整个代码都没有提供文化支持,我现在正在整个脚本中实现它。

正如你可能想的那样,正如我在这里写的那样,它并不像我想要的那样有效。

该应用程序使用MSSQL数据库收集基于日期范围的信息。因此,我使用用户选择的日期范围进行计算,使用Date BETWEEN x AND y

日期由用户设置,并在脚本中解析为datetime-values以便能够处理它们:

_DateRangeStart = DateTime.Parse(DateStart + " 00:00:00", _Culture);
_DateRangeEnd = DateTime.Parse(DateEnd + " 23:59:59", _Culture);

_Culture的定义如下:

public CultureInfo _Culture = CultureInfo.GetCultureInfo("de-DE");

_DateRangeStart(以及End)是来自文字字段的用户输入。

因此,当我查看skript时,它向我显示用户输入从1.11.2009(这是一个正确的德语格式化日期)转换为11/1/2009 00:00:00 AM,应该是1.11.2009 00:00:00 }(对于_DateRangeStart)。

SQL无法读取此值,并且无法将char转换为有效的日期时间。

为什么转换没有正确完成?

2 个答案:

答案 0 :(得分:3)

我猜你在DateTime变量上调用ToString()并且它以默认格式输出。 SQL然后尝试以它的默认格式解释它并失败。我认为您需要做的是以明确的格式格式化日期并将其发送到SQL Server。

E.g。

  string myDate = _DateRangeStart.ToString("yyyy-MM-dd");

答案 1 :(得分:0)

你的sql server是否设置为另一种文化而不是de-de?这也会产生这种行为。如果你的sql server认为他是美国人,他想要美国格式的日期。