代码之家  ›  专栏  ›  技术社区  ›  Marks

C#-解析不同格式的部分日期

  •  3
  • Marks  · 技术社区  · 16 年前

    我想使用户能够搜索日和月或月和年,也可以搜索日和月和年。

    你知道怎么做这样的事吗?我认为一个英国人可以搜索16/05,而一个美国人可以输入05/16,或者一个德国人可以使用16.05来查找5月16日的结果,这将是一件好事。

    我认为可以使用DateTimeFormat.ShortDatePattern。但我怎么能用它来从他们身上得到一天,一个月,一年?

    我想到了一个像

    public void GetDateParts(string SearchStr, out int? day, out int? month, out int? year)
    

    谢谢任何能帮我的人。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Marks    16 年前

    就像你们大多数人提到的,我想我会选择一个带有日期选择器或下拉列表的方法。 但对于那些对另一种解决方案感兴趣的人来说:

    我考虑了一会儿不同的格式,发现它们在大多数情况下非常相似。所以我写了一个方法,返回最常用模式的最佳匹配版本。所以“d.m.y.”->'d、 “m.y”或“d/m y”->'年/月/日。

    public static string SimplifyDateFormat(DateTimeFormatInfo DTFI)
    {
        StringBuilder SB = new StringBuilder(DTFI.ShortDatePattern.ToLower());
    
        SB.Replace("m y", "m/y").Replace(" 'г.'", "").Replace(" ", "").Replace("dd", "d")
        .Replace("mm", "m").Replace("yyyy", "y").Replace("yy", "y");
    
        if (SB[SB.Length - 1] == '.') SB.Remove(SB.Length - 1, 1);
        return SB.ToString();
    }
    

    这将可能的格式从26种减少到8种:

    • 年月日
    • 年月日
    • d-m-y公司
    • y、 医学博士
    • 年-月-日
    • 年月日
    • m、 d.y.公司

    P.S.仍然不能解决部分日期的问题。但搜索所有文化的完整日期是可能的。

        2
  •  0
  •   Andy    16 年前

    您可以定义许多输入格式,然后将其中一种格式(基于用户的信息)应用到表单中。比如:

    “输入日期(DD-MM):_ - _“对英国人来说

    “输入日期(MM-DD):_ -

    等。。。

    推荐文章