将任何日期格式化为MM / dd / yyyy

时间:2010-06-21 18:12:39

标签: regex vb.net visual-studio reporting-services

您好我正在处理一些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之外的所有内容。

5 个答案:

答案 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)

http://idunno.org/archive/2004/14/01/122.aspx

答案 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?