针对营销人员日期时间问题的 Sitecore 网络表单

Sitecore webforms for marketers datetime issues

我们正在将 sitecore 从 6.5 升级到 7.2,并将营销人员网络表单从 2.3 升级到 2.4

如果我提交表单,例如 0900,登录到 sitecore 管理员,打开表单报告,所有内容都正确插入,除了 "Created"字段,显示时间加上2小时 -> 1100

如果我使用 SQLite Manager(一个 firefox 插件)浏览 sqlite 数据库,我会看到表单 table 上的时间戳列显示时间 减去 2 小时 - > 0700

代码在 sitecore.Forms.Core.dll 中,我无法调试它,因为我没有 .pdb 文件。如果我应该添加一些文化信息,我已经查看了 Sitecore.Forms.Config 文件,但找不到任何东西

如果我在页面上呈现它,

Datetime.Now 会给出正确的日期时间,如果我在 sitecore 管理中创建项目,则会插入正确的日期。

有人知道这是怎么发生的吗?

这是正确的。它是一个 SQL 服务器时间戳字段。 Returns 当前数据库系统时间戳作为没有数据库时区偏移的日期时间值。

你可以用这样的东西来显示当地时间:

SELECT TOP 10 [Id]
      ,[FormItemId]
      ,[SessionId]
      ,[StorageName]
      ,[Timestamp]
      ,[Data]
      ,CONVERT(datetime, SWITCHOFFSET(CONVERT(datetimeoffset, Timestamp), DATENAME(TzOffset, SYSDATETIMEOFFSET()))) AS LocalDateTime
  FROM [Sitecore_WebForms].[dbo].[Form] order by TimeStamp desc

如果您在 Sitecore 中转到面向营销人员的 Web 表单/表单报告 比你可以在这个 Excel 导出中创建一个 .xls 你看到正确的时间。

如果您想查看 sitecore.Forms.Core.dll 中的代码,您可以使用 JetBrains dotPeek 免费的 .NET 反编译器。

我建议切换到 SQL 2.4 版 Web Forms for Marketers 数据库以获得更可靠的平台——因为您正在升级,这似乎是正确的选择。

这里下载wffm时需要的数据库文件在/data(mdf和ldf)文件夹中:

http://sdn.sitecore.net/SDN5/Resources/Sitecore%207/Web%20Forms%20for%20Marketers%20Module/Web%20Forms%20for%20Marketers%202.4.aspx

如果您想迁移您的数据,post这里有一个很好的关于如何做的文章

http://blog.computol.com/post/29404213349/sitecore-web-forms-for-marketers-migrating-from