部署到虚拟机时,DateTime不接受格式或文化

时间:2014-05-07 19:42:45

标签: asp.net vb.net datetime

我将一个字符串格式化的DateTime从我的ASP.NET(vb.net)应用程序导出到SQL Server记录。这在我的开发机器上运行良好。我可以使用任何格式并在web.config或我的<%@ Page%>中更改文化。声明。

如果我将应用程序部署到生产服务器,则忽略这些设置。始终以此格式生成日期时间" 2014年5月7日下午7:31"。没有文化设置,也没有toString格式显示任何效果。

我并没有对确切的格式感到困惑,但我需要在DateTime字符串中获取秒数。这在生产服务器上似乎是不可能的。

编辑:

没有多少代码可供展示。以下行在开发机器上正常工作:

DateTime.Now.ToString("yyyy/MM/dd hh:mm:ss.fff")

关键是生产服务器上没有应用任何格式。

改变文化也不会产生影响(在生产服务器上)。

编辑:

在我使用的页面声明中:

<%@ Page Language="vb" Culture="es-MX" UICulture="es" ...

在我使用的配置中:

<system.web>
<globalization culture="es-MX" uiCulture="es"/>

1 个答案:

答案 0 :(得分:3)

不要依赖配置,而应考虑更改代码以传递特定的文化。

例如:

yourDateTime.ToString("yyyy/MM/dd hh:mm:ss.fff", CultureInfo.InvariantCulture)

或者

yourDateTime.ToString("yyyy/MM/dd hh:mm:ss.fff", New CultureInfo("en-GB"))

<强>更新

根据您的评论,我可以提供以下建议:

  • 文化与此方案无关。 SQL Server不将日期存储为字符串,它将它们存储在datetimedatetime2datetimeoffset等类型中。这些类型没有特定于文化的属性。

  • 使用SQL参数时,不应将日期作为字符串传递。将它们作为DateTimeDateTimeOffset类型传递。

  • 您可能根本不需要传递它,因为您可以在SQL中使用GETDATE()GETUTCDATE()

  • 认为你的意思是当你在SQL Server Management Studio这样的另一个工具中看到你在具有特定格式的字符串中看到输出时的值。该格式与实际存储的内容无关,只与显示的方式有关。 SQL有自己的设置来控制它。