c# - 将 20121004 (yyyyMMdd) 转换为有效的日期时间?

标签 c#

我有一个格式如下的字符串yyyyMMdd,我试图让它看起来像这样:

yyyy-MM-dd

当我尝试时:

string date = "20121004";

Convert.ToDateTime(date).ToString("yyyy-MM-dd");

我得到错误:

FormatException:字符串未被识别为有效的 DateTime。

下面的方法是否有效,或者我会遇到问题吗:

private string GetValidDate(string date,string format)
{
    DateTime result;
    if(DateTime.TryParseExact(date, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
    {
        return date;
    }
    else if(DateTime.TryParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
    { 
        return DateTime.ParseExact(date, "yyyyMMdd",
                CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
     }
     else
     {
        return "Invalid Date Format";
     }
}

最佳答案

只需使用DateTime.ParseExact 方法:

string date = "20121004";

string result = DateTime.ParseExact(date, "yyyyMMdd",
                CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");

这还提供了在使用连字符重新格式化日期之前验证日期的优势。如果日期不在有效范围内或格式不匹配,ParseExact 会抛出一个您可以捕获的异常。

关于c# - 将 20121004 (yyyyMMdd) 转换为有效的日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11053887/

相关文章:

c# - 有限并发级别的任务调度程序(具有任务优先级)处理包装任务

c# - 循环遍历 Entity Framework 6 中的表格

c# - 在自定义对象集合上使用 LINQ 时,IEquatable<T>、IEqualityComparer<T> 和覆盖 .Equals() 之间的区别?

c# - 使用 C# 格式化字符串中的句子

c# - MongoDB 在 Azure 平台上非常慢

c# - 字典中的无效键

c# - "Anonymous Recursion"在 .NET 中有效吗?它在单声道

c# - LINQ - Distinct 被忽略了吗?

c# - 根据文本框中键入的值搜索 gridview?

c# - 设计一个 BigNumber 类