【问题标题】:Formatting any date into MM/dd/yyyy将任何日期格式化为 MM/dd/yyyy
【发布时间】:2010-06-21 18:12:39
【问题描述】:

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

我希望能够提出用于该行的格式代码,以便它将其中的任何一个转换为 MM/dd/yyyy 格式,而其他任何内容都保持不变。不幸的是,我的 VB 技能范围并不符合我的目标。我希望有人能帮助我解决这个问题。我在想一些类似 iif(me.Value=####/##/####@##:##:##@@&, MM/dd/yyyy, nothing) 的东西,但事实并非如此似乎不起作用。

提前致谢。

编辑:=iif(isDate(me.Value), "MM/dd/yy", nothing) 适用于除 2010/06/18 之类的所有内容。

【问题讨论】:

  • 你能确定月份和日期总是按月/日顺序排列吗?还是周围也有一些 dd/mm 的实例?可以有两位数的年份吗?
  • 建议:尝试教你的用户 ISO8601 日期格式。

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


【解决方案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 运行的文化,像 1/2/2012 这样的日期可以解释为 2012 年 1 月 2 日或 2012 年 2 月 1 日。

【讨论】:

    【解决方案2】:

    你试过String.Format("{0}", my_formatting)

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

    【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 感谢您的意见,但这似乎对我没有帮助
    【解决方案4】:
    \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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-18
      • 2013-11-01
      • 1970-01-01
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-02
      • 1970-01-01
      相关资源
      最近更新 更多