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

C#Regex,格式化时间

  •  0
  • Entity  · 技术社区  · 14 年前

    我正在制作一个时间卡程序,用户输入开始时间、结束时间和项目名称。他们可以点击“添加”,然后将输入的详细信息添加到列表框中。

    08:14am 不过,每次都要像这样输入,这让我很恼火,所以我决定,通过regex,让它自动格式化。所以如果你进入 8:14 ,它将更改为 . 我怎样才能通过 Regex.Replace() ?

    如果你有其他的方法,不要犹豫列出它们。

    我也有其他的替代品;例如 814 转到 ,和 8 转到 08:00am

    所以现在我用这个代码:

    string[] formats = { "h:mm", "h", "hh", "hmm", "hhmm", "h:mmtt", "htt", "hhtt" };
    DateTime dt = DateTime.ParseExact(t.Text, formats, new CultureInfo("en-US"), DateTimeStyles.None);
    t.Text = dt.ToString("hh:mmtt").ToLower();
    

    它取代了一些东西,比如 h:mm h .

    5 回复  |  直到 14 年前
        1
  •  5
  •   Tim Robinson    14 年前

    你看过吗 DateTime.Parse ? 它接受 "08:14am" "8:14" [1] 以及其他变体,并返回 DateTime 定在今天早上8:14。

    CultureInfo 参数,具体取决于您是要注意用户的本地格式首选项,还是采用固定格式。

    编辑 我也有其他的替代品,例如814到08:14,8到08:00

    看一看 DateTime.ParseExact :您可以提供一组有效的时间格式(例如“hh:mm”、“hmm”, 等)

        2
  •  1
  •   DOK    14 年前

    在输入端使用一个掩码怎么样 ?

    JavaScript and jQuery tools 可以这样做。

    使用这种方法可以保留一些用户对输入的控制,并让用户看到他们的输入。

        3
  •  1
  •   Mikael    14 年前

    你考虑过使用DateTimePicker吗?让用户编写时间看起来更麻烦。

    参见例如。 http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.aspx

        4
  •  0
  •   Liviu Mandras    14 年前

    我觉得regex对这个有点过分了。为什么不简单地在末尾加上“am”,以防nto已经添加了一个2行代码,以防您正在处理方法中的字符串。

        5
  •  0
  •   FrustratedWithFormsDesigner    14 年前

    http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

    “HH”格式标签将小时格式设置为从00到23的24小时时间。传统上,12小时的时间不是零填充到左边,但是24小时的时间(至少是我看到的频率),可能是为了避免1800到0800之间的混淆。或者,如果不需要24小时制,可以在字符串的小时部分用0到2位数字填充。


    编辑:

    推荐文章