检测格式日期

时间:2010-10-05 07:18:01

标签: c# datetime

有没有办法,一种好方法来测试我想要在DateTime中转换的字符串是dd/MM/yyyy还是MM/dd/yyyy

谢谢,

4 个答案:

答案 0 :(得分:10)

不,因为它可能都是。是11月10日11月10日还是10月11日?

是的,在一些的情况下(如果一个数字大于12),它将是明确的 - 但我认为最好强制使用一种格式或另一种格式。如果您只是以任何方式处理可以以MM / dd / yyyy完成的任何事情,并且如果失败(或反过来)继续前进到dd / MM / yyyy那么你会得到一些用户非常惊讶。

如果这是网络应用程序或类似内容的一部分,我会尝试使用月份名称而不是数字,尽可能完全明确。

答案 1 :(得分:2)

不,但你可以在解析时尝试两种方法:

DateTime result;
if (DateTime.TryParseExact(
    "05/10/2010",
    new[] { "MM/dd/yyyy", "dd/MM/yyyy" }, 
    CultureInfo.InvariantCulture, 
    DateTimeStyles.None, 
    out result)
)
{        
    // successfully parsed date => use the result variable
}

答案 2 :(得分:1)

此问题将存在,直到所有人接受并使用ISO方式。我是一名瑞典程序员,与美国和英国客户合作很多,很难让这些客户使用标准化的日期格式。

ISO 8601 - 使用它!

答案 3 :(得分:0)

看看DateTime.ParseExact and DateTime.TryParseExact

string date1 = "24/12/2010";
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime dt1 = new DateTime(1, 1, 1);
bool dt1Valid = false;
try
{
    dt1 = DateTime.ParseExact(date1, "dd/MM/yyyy", provider);
    dt1Valid = true;
}
catch
{
    dt1Valid = false;
}