C# 营销人员日期时间问题的Sitecore webforms

C# 营销人员日期时间问题的Sitecore webforms,c#,asp.net,sqlite,sitecore,web-forms-for-marketers,C#,Asp.net,Sqlite,Sitecore,Web Forms For Marketers,我们正在将sitecore从6.5升级到7.2,将webforms for marketers模块从2.3升级到2.4 如果我提交表单,例如在0900,登录sitecore管理员并打开表单报告,则所有内容都已正确插入,但“已创建”字段除外,该字段显示时间加上2小时->1100 如果我使用sqlite管理器(一个firefox插件)浏览sqlite数据库,我会看到表单表上的Timestamp列显示时间减去2小时->0700 代码在sitecore.Forms.Core.dll中,我无法调试它,因为

我们正在将sitecore从6.5升级到7.2,将webforms for marketers模块从2.3升级到2.4

如果我提交表单,例如在0900,登录sitecore管理员并打开表单报告,则所有内容都已正确插入,但“已创建”字段除外,该字段显示时间加上2小时->1100

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

代码在sitecore.Forms.Core.dll中,我无法调试它,因为我没有.pdb文件。我已经查看了Sitecore.Forms.Config文件,是否应该添加一些cultureinfo,但找不到任何内容

Datetime。现在,如果我在页面上呈现它,就会给出正确的日期时间,如果我在sitecore管理中创建项目,就会插入正确的日期


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

这是正确的。它是一个SQL Server时间戳字段。 将当前数据库系统时间戳作为datetime值返回,不带数据库时区偏移量

您可以使用类似的方式显示本地时间:

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中访问Marketeers的Web表单/表单报告 然后您可以在此Excel导出中创建一个.xls,这样您就可以看到正确的时间


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

我建议您在2.4版上切换到针对营销人员的Web表单的SQL数据库,以获得更可靠的平台-升级时,这似乎是正确的做法

在此处下载wffm时,所需的数据库文件位于/data(mdf和ldf)文件夹中:

如果你想迁移你的数据,这里有一篇关于如何迁移的帖子


Hmmm,如果我创建一个.xls,它仍然显示错误的数据。它是一个sqlite数据库,所以我猜它不是一个SQLServer时间戳字段。执行SELECT GETDATE()作为CurrentDateTime返回正确的日期。奇怪的是,我用wffm 2.3安装的6.5没有这些问题。我在旧的6.5/2.3安装中使用了新的sqlite数据库,在这种情况下,它存储并显示正确的日期时间。我尝试了dotPeek,但是反编译的代码不是很人性化的阅读:-(谢谢,如果我必须的话,我想我会的:-)我还是想解决这个问题,但是感谢Infopeek已经有一段时间了,但是我不得不改为切换到SQL数据库。我联系了sitecore,他们承认这是一个bug,并将其添加到问题列表中。但没有优先修复:-(感谢您再次访问此版本。很高兴您找到了前进的方向。报告给sitecore,在他们能够复制后,他们将其添加到(内部)问题列表中。