刚开始接触RDLC报表,觉得RDLC报表提供的格式化工具太少,不像Crystal Report一样那么多的API支持,用起来多少的灵活啊。
由于RDLC报表中有相关的日期格式字段,因此自然而然的就需要对日期字段进行格式化了,搜索了一些文章都是在介绍
FormatDateTime函数,其实用起来就发现FormatDateTime不是我要的料,这此先看看FormatDateTime的声明吧:
Function FormatDateTime(
ByVal Expression As DateTime,
Optional ByVal NamedFormat As DateFormat = DateFormat.GeneralDate
) As String
ByVal Expression As DateTime,
Optional ByVal NamedFormat As DateFormat = DateFormat.GeneralDate
) As String
DateFormat是一个枚举,其值很少不太适合中国人制作报表的习惯,
NamedFormat 参数具有下列设置:
常量 | 说明 |
---|---|
DateFormat.GeneralDate | 显示日期和/或时间。如果有日期部分,则用短日期格式显示。如果有时间部分,则用长时间格式显示。如果二者都有,则两部分都显示。 |
DateFormat.LongDate | 使用计算机的区域设置中指定的长日期格式来显示日期。 |
DateFormat.ShortDate | 使用计算机的区域设置中指定的短日期格式来显示日期。 |
DateFormat.LongTime | 使用计算机区域设置中指定的时间格式来显示时间。 |
DateFormat.ShortTime | 使用 24 小时格式 (hh:mm) 显示时间。 |
FormatDateTime(Fields!PlanStartDate.Value,DateFormat.ShortDate)
Command | Result |
FormatDateTime(Parameters!Date.Value,1) | Tuesday, April 10, 2007 |
FormatDateTime(Parameters!Date.Value,2) | 4/10/2007 |
FormatDateTime(Parameters!Date.Value,3) | 12:00:00 AM |
FormatDateTime(Parameters!Date.Value,4) | 00:00 |
如果我想通过FormatDateTime将日期格式显示成“2012年4月”,那就很难了。
解决方法
The Format command and specify the exact format you require.
好Format函数现已隆重出场了,因此他确实可以解决我的问题,而且使用习惯与DateTime.ToString()类似,非常简单:
Command | Result |
Format(Parameters!Date.Value,"dd-MM-yyyy") | 10-04-2007 |
Format(Parameters!Date.Value,"dd/MM/yyyy") | 10/04/2007 |
Format(Parameters!Date.Value,"MMM-dd-yyyy") | Apr-10-2007 |
Format(Parameters!Date.Value,"MMM-dd-yy") | Apr-10-07 |