日期时间在部署到虚拟机时不接受格式或区域性



我从我的ASP.NET(vb.net)应用程序导出一个字符串格式化的DateTime到SQL Server记录。这在我的开发机器上运行良好。我可以使用任何格式和改变文化在任何一个网络。

配置<%@ Page %>声明

如果我将应用程序部署到生产服务器,这些设置将被忽略。日期时间将始终以"May 7 2014 7:31PM"的格式生成。没有区域性设置和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"/>

与其依赖于配置,不如考虑更改代码以传递特定的区域性。

例如:

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()

  • I think你的意思是,当你在另一个工具(如SQL Server Management Studio)中查看值时,你看到的是一个特定格式的字符串输出。该格式与实际存储的内容无关,只与如何显示有关。

相关内容

  • 没有找到相关文章

最新更新