繁体   English   中英

部署到虚拟机时,DateTime不接受格式或区域性

[英]DateTime doesn't accept format or culture when deployed to a virtual machine

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

如果我将应用程序部署到生产服务器,则这些设置将被忽略。 日期时间将始终以“ May 7 2014 7:31 PM”格式生成。 没有文化设置,并且没有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()

  • 认为您的意思是,当您在另一个工具(例如SQL Server Management Studio)中查看值时,会看到具有特定格式的字符串中的输出。 该格式与实际存储的内容无关,仅与显示方式无关。 SQL具有用于控制它的自己的设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM