加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#:如何将字符串转换为DateTime,其中字符串可以具有任何标准日

发布时间:2020-12-15 07:40:24 所属栏目:百科 来源:网络整理
导读:我在DateTime上发布了一个关于String转换的问题,我得到了很多令人满意的答案..所以我非常感谢StackOverflow ..这是String manupulation的另一个问题,我被困住了……我必须转换一个字符串(从一些外部来源)使用C#代码..字符串可以具有这些预期格式的DateTime .
我在DateTime上发布了一个关于String转换的问题,我得到了很多令人满意的答案..所以我非常感谢StackOverflow ..这是String manupulation的另一个问题,我被困住了……我必须转换一个字符串(从一些外部来源)使用C#代码..字符串可以具有这些预期格式的DateTime ..

> 02/31/2009 01:59:59 24小时格式
> 02/31/2009 01:59:59 AM 12小时格式
> 2009年2月31日1:59:59
> 2009年2月31日上午1:59:59
> 02/01/2009 01:59:59 AM
> 2009年2月1日1:59:59
>等等…….

我尝试使用DateTime(Convert.ToInt32(string_date.Substring(6,4)),Int,Int)即,通过提取月,日等的值,但它不起作用..因为我不能完美地提取子字符串的值…因为字符串的长度变化我也试图提取引用“/”,“空格”和“:”的出现的值,但它变成了瓶颈来导出(非)AM / PM的发生只有日,月和小时的长度可以变化..

解决方法

您可以使用DateTime.ParseExact重载,该重载采用以下格式列表:
private static string[] formats = new string[]
    {
        "MM/dd/yyyy HH:mm:ss tt","MM/dd/yyyy HH:mm:ss","M/dd/yyyy H:mm:ss tt","M/dd/yyyy H:mm:ss"        
    };

private static DateTime ParseDate(string input)
{
    return DateTime.ParseExact(input,formats,CultureInfo.InvariantCulture,DateTimeStyles.None);
}

如果传递的字符串与任何给定格式不匹配,则抛出FormatException.请注意,期望AM / PM的格式应出现在没有AM / PM的相同格式之前(“MM / dd / yyyy HH:mm:ss tt”出现在“MM / dd / yyyy HH:mm:ss”之前).

更新
正如Henk在注释中指出的那样,使用TryParseExact时可以使用相同的功能来删除异常情况.此外,与可空类型配对,这可以更清洁:

private static DateTime? ParseDate(string input)
{
    DateTime result;
    if (DateTime.TryParseExact(input,DateTimeStyles.None,out result))
    {
        return result;
    }
    return null;
}

现在,如果它无法解析输入,它将只返回一个空引用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读