我从我的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不将日期存储为字符串,它将它们存储为
datetime
或datetime2
或datetimeoffset
等类型。这些类型没有特定区域性的属性。在使用SQL参数时,不应该将日期作为字符串传递。将它们作为
DateTime
或DateTimeOffset
类型传递你可能根本不需要传递它,因为你可以在SQL中使用
GETDATE()
或GETUTCDATE()
。I think你的意思是,当你在另一个工具(如SQL Server Management Studio)中查看值时,你看到的是一个特定格式的字符串输出。该格式与实际存储的内容无关,只与如何显示有关。