-1

我正在尝试将 DateTime 对象传递给我的网络服务。系统一直告诉我有一个 SqlDateOverflow 错误。我尝试将对象转换为字符串,但同样的错误仍然存​​在。

如何从使用某种文化的系统传递 DateTime 对象,而 Web 服务所在的服务器使用不同的文化?有没有办法标准化对象,以便任何系统,无论其文化如何,都可以将对象解析为其 DateTime 等效项?

我曾尝试使用 DateTime.Parse 方法、DateTime.TryParse 方法,甚至 DateTime.ParseExact 方法,但它们都导致“SqlDateOverflow”。

4

3 回答 3

0

我总是将日期作为ISO8601格式的字符串传递

请参阅 在 C# 中将 dateTime 转换为 ISO 格式 yyyy-mm-dd hh:mm:ss

于 2012-11-16T12:54:42.370 回答
0

为避免此问题,您可以修改您在 Web 服务中调用的 SQL 脚本/过程,在开始时添加:

SET DATEFORMAT dmy; -- day/month/year

或者

SET DATEFORMAT mdy; -- month/day/year

这样,如果您将其作为格式正确的字符串传递,您的 SQL 引擎将始终正确处理它。

于 2012-11-16T12:56:12.920 回答
0

如果没有关于您要去/来自什么文化的更多细节,这可能会帮助您解决手头的问题

DateTime.Parse(yourDateTimeString,CultureInfo.InvariantCulture)
于 2012-11-16T12:56:59.207 回答