我正在通过Reporting Services进行报告。我的一个文本框有一个表达式,它接收一个参数,该参数基本上是一个包含日期的字符串,例如' 20110410'我需要将此字符串转换为日期,添加/并将日期放在第一,月,年。
这已经完成了。但事情是,我需要在日期和月份之后添加0,当这些低于10时,所以不要使用1/4/2011我想要01/04/2011。
我不知道如何使用标记代码,如果代码显示不正确,请提前抱歉。
=IIF(Parameters!Uperiodo.Value = "Día",
IIF(Day(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate))<10,
"0"+Day(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate)),
(Day(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate))))
& "/" &
Month(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate))
& "/" &
Year(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate))
,
Month(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate))
& "/" &
Year(FormatDateTime(
CDate(mid(Parameters!Desde.Value,5,2) & "/" & mid(Parameters!Desde.Value,1,4) & "/" & mid(Parameters!Desde.Value,7,2)),DateFormat.ShortDate))
)
谢谢!
编辑:对不起,我没有解释为什么我们这样做。我们需要这样做,因为需要下载报告的服务器具有英文格式(mm / dd / yyyy)。最诚挚的问候,
答案 0 :(得分:1)
如果这是你的标签所说的vb.net,你应该真正阅读你正在使用的类的documentation。 ParseExact会将字符串转换为DateTime,而ToString会将DateTime转换回具有所需格式的字符串。
Dim d As DateTime = DateTime.ParseExact("20110410", "yyyyMMdd", Nothing)
Console.WriteLine(d.ToString("dd/MM/yyyy")) ' 10/04/2011
此外,您应该使用Substring而不是mid 如果你有一个数字,你可以追加一个0。
Console.WriteLine(4.ToString("00")) ' 04
Console.WriteLine(10.ToString("00")) ' 10
答案 1 :(得分:-1)
我找到了解决方案。
我知道代码是丑陋的,最近(1分钟前)我意识到我可以使用报告属性中的“个性化代码”来做变量等。
所以解决方案是使用&amp;而不是+。
最诚挚的问候并感谢您的帮助.-
重要编辑: 事实上,我不必使用IIF,我只需要添加“0”&amp;对于前9个日期而言就是这样。