【问题标题】:I need code to validate any time in c# in HHMMSS format [closed]我需要代码以 HHMMSS 格式在 c# 中随时验证 [关闭]
【发布时间】:2011-01-17 06:12:07
【问题描述】:

请帮助我在 c# 中找到任何时间验证的代码。 格式-HHMMSS

【问题讨论】:

  • 哦,是的,这闻起来像作业。

标签: c# validation time


【解决方案1】:

最简单的方法大概就是使用DateTime.TryParseExact

DateTime time;
bool valid = DateTime.TryParseExact(text,
                                    "HHmmss",
                                    CultureInfo.InvariantCulture,
                                    DateTimeStyles.None,
                                    out time);

注意“M”是月,“m”是分钟,“s”是秒; “HH”是 24 小时制的小时,而不是使用 12 小时制的“hh”(通常在其他地方带有 am/pm 指示符)。

DateTimeStyles.None 表示使用默认选项。这将使用今天的日期作为与时间同步的日期。您可以指定 DateTimeStyles.NoCurrentDateDefault,它将使用公元 1 月 1 日。

如果valid 为假,time 将被设置为DateTime.MinValue


如果您使用 .NET 4,另一种选择是使用 TimeSpan.TryParseExact

TimeSpan time;
bool valid = TimeSpan.TryParseExact(text,
                                    "hhmmss",
                                    CultureInfo.InvariantCulture,
                                    out time);

注意这次使用“hh”而不是“HH”。有关详细信息,请参阅 MSDN 上的 Custom TimeSpan format strings 页面 - 但请记住,这仅在 .NET 4 中可用。

【讨论】:

  • 第三个和第四个参数交换了。
  • 是的,这个方法确实需要一个没有任何一个的重载。由于本地化,他们可能担心选择默认的IFormatProvider,但您已经可以使用null(使用当前文化)。
  • @Matthew:是的。就我个人而言,我希望它默认为不变的文化(这样没有明确讨论文化的代码在任何地方都可以正常工作),但我们走了。
  • 非常感谢.....
【解决方案2】:

看看DateTime.TryParseExact

static bool IsTimeValid(string time)
{
  DateTime dt;

  return DateTime.TryParseExact(time, "HHmmss", 
    System.Globalization.CultureInfo.InvariantCulture, 
    System.Globalization.DateTimeStyles.None, out dt);
}

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多