在Date变量

时间:2015-08-07 12:50:33

标签: asp.net reporting-services

我正在通过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)。

最诚挚的问候,

2 个答案:

答案 0 :(得分:1)

如果这是你的标签所说的vb.net,你应该真正阅读你正在使用的类的documentationParseExact会将字符串转换为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个日期而言就是这样。