您好我正在处理一些SSRS报告,而且我得到的数据范围很广。我将以以下形式获取日期: 6/18/2010 6:00:00 AM, 6/18/2010, 2010年6月18日
我希望能够提出一个格式化代码用于该行,以便将它们中的任何一个转换为MM / dd / yyyy格式,而其他任何东西都保持不变。不幸的是,我的VB技能范围并不符合我的目标。我希望有人可以帮我这个。我在想iif(me.Value = #### / ## / #### @ ##:##:## @@&,MM / dd / yyyy,没什么),但是那个似乎不起作用。
提前致谢。
编辑:= iif(isDate(me.Value),“MM / dd / yy”,没有)适用于除2010/06/18之外的所有内容。
答案 0 :(得分:1)
如果你知道me.Value总是一个约会,你可以用不同的格式编写表达式,如
=DateTime.Parse(Fields!me.Value).ToString("MM/dd/yyyy")
如果撤回的数据可能是也可能不是日期,那么最好的办法就是创建类似
的代码块Public Function FormatDate(Value as String) As String
Dim NewDate as DateTime
If (DateTime.TryParse(Value, NewDate)) Then
FormatDate = NewDate.ToString("MM/dd/yyyy")
Else
FormatDate = ""
End If
End Function
然后在您的表达中调用此代码块,如
=Code.FormatDate(Fields!me.Value)
DateTime.Parse函数可以找出许多不同格式的日期。唯一的问题是,根据文化.Net正在运行,像2012年1月2日这样的日期可以解释为2012年1月2日或2012年2月1日。
答案 1 :(得分:0)
您是否尝试过String.Format("{0}", my_formatting)
答案 2 :(得分:0)
也许您可以查看Date.Parse
方法。一些示例可用here
答案 3 :(得分:0)
\b(?<year>\d{4})/(?<month>\d{1,2})/(?<day>\d{1,2})\b|\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{4})\b
将从您的字符串中提取年,月和日。它预计一个四位数的年份,只接受斜杠作为分隔符,并且预计几个月总是在几天之前。
它没有做任何验证(检查有效日期),但这不是正则表达式非常擅长的 - 如果它是必要的话,这应该以编程方式完成。
所以在Visual Basic中,这看起来应该是
Dim RegexObj As New Regex("\b(?<year>\d{4})/(?<month>\d{1,2})/(?<day>\d{1,2})\b|\b(?<month>\d{1,2})/(?<day>\d{1,2})/(?<year>\d{4})\b")
year = RegexObj.Match(SubjectString).Groups("year").Value
month = RegexObj.Match(SubjectString).Groups("month").Value
day = RegexObj.Match(SubjectString).Groups("day").Value
答案 4 :(得分:0)
我似乎无法发表评论。这是VB经典(VB6)还是VB.NET?