如何在 rdlc 报告中附加当天的日期 th、st、nd 和 rd?

问题描述 投票:0回答:3

我正在处理认证,我需要附加日期后缀。我尝试在 TextBox 的表达式属性中使用

=Day(Fields!Date.value)
,但输出只是当天的数字/日期,但没有后缀。我在月份和年份方面没有问题,只有当天日期的后缀。谢谢

sql vb.net sql-server-2008 rdlc date-format
3个回答
1
投票

使用 有一种简单的方法在 C# 中创建序数吗? 中的建议,您可以为 rdlc 报告创建一个

Custom Code
并将其与表达式一起使用。

  1. 在rdlc属性中的Code选项卡中添加以下函数

    Public Shared Function AddOrdinal(num As Integer) As String
        If num <= 0 Then
            Return num.ToString()
        End If
        Select Case num Mod 100
            Case 11, 12, 13
                Return num & "th"
        End Select
        Select Case num Mod 10
            Case 1
                Return num & "st"
            Case 2
                Return num & "nd"
            Case 3
                Return num & "rd"
            Case Else
                Return num & "th"
        End Select
    End Function
    
  2. 然后修改你的Expression如下

    =Code.AddOrdinal(Day(Fields!Date.value))
    

0
投票

如果您可以修改数据集,则可以添加以下字段以将日期拆分为日期、后缀和月/年:

select Cast(DAY(Date) as Varchar(2)) as MthDay, DATENAME(month, Date) + ' ' + convert(varchar(4),year(Date)) as MthYr,
CASE WHEN DAY(Date) in (1,21,31) THEN 'st' WHEN DAY(Date) IN (2,22) then 'nd' WHEN DAY(Date) IN (3,23) then 'rd' ELSE 'th ' end as Suffix
From MyData

然后,您可以在报告中使用三个文本字段来显示日期,并将后缀文本设置为 6pt 并设置为显示在字段顶部。

或者,您可以使用一个文本字段集来允许 HTML 标签,并使用 su 标签将三个部分连接在一起,以适当地显示后缀。


0
投票

您可以直接使用以下代码片段

 (SELECT FORMAT(dbo.Getlocaldatetime(), 'dddd, d') + 
                    CASE WHEN DAY(dbo.Getlocaldatetime()) % 10 = 1 AND DAY(dbo.Getlocaldatetime()) != 11 THEN 'st'
                    WHEN DAY(dbo.Getlocaldatetime()) % 10 = 2 AND DAY(dbo.Getlocaldatetime()) != 12 THEN 'nd'
                    WHEN DAY(dbo.Getlocaldatetime()) % 10 = 3 AND DAY(dbo.Getlocaldatetime()) != 13 THEN 'rd'
                    ELSE 'th' END + 
                    FORMAT(dbo.Getlocaldatetime(), ' MMMM') ) AS [SystemDate]
© www.soinside.com 2019 - 2024. All rights reserved.