2

我有一些 sql server 报告 - .rdl 文件,我想在其中添加自定义代码来进行一些时区转换。经过一番谷歌搜索,我发现我可以在 Visual Basic 中编写自定义代码。是否有任何其他支持编写自定义代码的语言?像java?

我不知道 VB 在 VB 中编写代码。报告中的自定义代码是否支持 java?

4

1 回答 1

3

在不了解 VB.Net 的情况下,您的问题很容易解决 :),您可以使用此功能进行转换(它将没有时区 (+00) 的时间通过 id 转换为给定时区):

Shared Function ConvertServerTimeNow(ByVal systemDate As Date, ByVal timeZoneId As String, Optional ByVal daylightSavingsTime As Boolean = False) As Date
        Dim timeZoneInfo As TimeZoneInfo
        If timeZoneId Is Nothing Then
            Return systemDate
        Else
            timeZoneInfo = timeZoneInfo.FindSystemTimeZoneById(timeZoneId)
            If daylightSavingsTime = False Then
                timeZoneInfo = timeZoneInfo.CreateCustomTimeZone(timeZoneInfo.Id, timeZoneInfo.BaseUtcOffset, timeZoneInfo.DisplayName, timeZoneInfo.StandardName, timeZoneInfo.DaylightName, Nothing, True)
            End If
        End If
        Return (timeZoneInfo.ConvertTime(systemDate, timeZoneInfo))
End Function

关于 TimeZoneID 列表可以参考这个答案:https ://stackoverflow.com/a/7908482/1048105

关于其他语言:您可以通过添加自定义程序集来使用 .NET 平台上的任何语言,但您不能在 rdl 中以除 VB.NET 之外的其他语言编写代码。关于自定义程序集,您可以在此处阅读http://support.microsoft.com/kb/920769,但很难部署它,我不建议在没有必要的情况下这样做。

于 2013-03-18T14:39:05.343 回答