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

Regex 将任何日期格式化为MM/dd/yyyy,regex,vb.net,visual-studio,reporting-services,Regex,Vb.net,Visual Studio,Reporting Services,嗨,我目前正在处理一些SSRS报告,我得到的数据范围很广。我的约会形式如下: 2010年6月18日上午6:00:00, 6/18/2010, 2010/6/18 我希望能够想出一个用于行的格式化代码,这样它就可以将其中任何一个转换成MM/dd/yyyy格式,而其他任何格式都可以保持不变。不幸的是,我的VB技能范围并不符合我的目标。我希望有人能帮我解决这个问题。我在想一些关于iif的事情(me.Value=######################################## 提前谢谢

嗨,我目前正在处理一些SSRS报告,我得到的数据范围很广。我的约会形式如下: 2010年6月18日上午6:00:00, 6/18/2010, 2010/6/18

我希望能够想出一个用于行的格式化代码,这样它就可以将其中任何一个转换成MM/dd/yyyy格式,而其他任何格式都可以保持不变。不幸的是,我的VB技能范围并不符合我的目标。我希望有人能帮我解决这个问题。我在想一些关于iif的事情(me.Value=########################################

提前谢谢


编辑:=iif(isDate(me.Value),“MM/dd/yy”,无任何内容)适用于除2010/06/18以外的所有内容。

您是否尝试过
String.Format(“{0}”,my_格式)


也许您可以看看
Date.Parse
方法。一些示例可用

\b(?\d{4})/(?\d{1,2})/(?\d{1,2})\b{124;\ b(?\d{1,2})/(?\d{1,2})/(?\d{4})\b
将从字符串中提取年、月和日。它预计年数为四位数,只接受斜杠作为分隔符,预计月数总是先于天

它不做任何验证(检查有效日期),但这不是正则表达式非常擅长的事情——如果有必要的话,应该通过编程来完成

在VisualBasic中,这应该是

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
Dim RegexObj作为新的正则表达式(“\b(?\d{4})/(?\d{1,2})/(?\d{1,2})\b{124b(?\d{1,2})/(?\d{1,2})/(?\d{4})\b”)
年份=RegexObj.Match(SubjectString).Groups(“年份”).Value
月=RegexObj.Match(SubjectString).Groups(“月”).Value
day=RegexObj.Match(SubjectString).Groups(“day”).Value

如果您知道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)

Parse函数可以计算出许多不同格式的日期。唯一的问题是,根据.Net所处的文化环境,像2012年1月2日这样的日期可以解释为2012年1月2日或2012年2月1日。

要用C语言进行此操作,他是否要求使用“C”语言?看起来他在找VB(根据主题标签),谢谢你的输入,但这似乎对我没什么帮助。你能确定月和日总是以mm/dd为顺序吗?或者也会有一些dd/mm的例子吗?有两位数的年份吗?建议:试着教你的用户ISO8601日期格式。
=Code.FormatDate(Fields!me.Value)