如何在 C# 中将日期字符串转换为 DateTime 对象? [复制]

Posted

技术标签:

【中文标题】如何在 C# 中将日期字符串转换为 DateTime 对象? [复制]【英文标题】:How to convert a date string to a DateTime object in C#? [duplicate] 【发布时间】:2015-11-20 05:16:02 【问题描述】:

我有一个解析日期字符串的方法

public static DateTime ParseDateTime(string dateString)

        DateTime dateTime;
        if (!DateTime.TryParse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out dateTime))
        
            try
            
                dateTime = DateTime.Parse(dateString, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);
            
            catch (FormatException)
            
                ...
            

        dateTime = dateTime.ToUniversalTime();
        return dateTime;
   

但是在输入中我可以有不同的格式,例如,如果我在我的 GUI 中将日期格式更改为 d/MM/yyyy(澳大利亚和英国语言环境),那么我将拥有 System.FormatException Additional information: String was not recognized as a valid DateTime.

我该如何处理这两种情况?

【问题讨论】:

【参考方案1】:

您需要使用ParseExact 方法而不是Parse 并根据您使用的格式提供格式字符串。

如果需要同时处理多种格式,可以在formats[]数组中指定多种格式。

【讨论】:

你能提供一个代码吗?我现在不知道如何在 DateTime.ParseExact() 方法中放置多种格式? 你看过我发布的链接内容了吗?文末有例子。 是的,在 MSDN 中,所有格式都以 M 开头,但英国区域设置为 d/MM/yyyy。在哪里可以找到所有格式的列表? @Anatoly 没有“所有可能的格式列表”之类的东西,因为您可以使用自定义格式说明符自己构造格式字符串。看看这里:msdn.microsoft.com/en-us/library/8kb3ddd4%28v=vs.110%29.aspx 我可以有 DateTimeStyles.AssumeUniversal 吗?【参考方案2】:

鉴于您了解当前的文化,您可以使用这个:

DateTime.Parse(dateString, new System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.Name, false));

【讨论】:

【参考方案3】:

你可以这样试试:

DateTime d1 = DateTime.ParseExact("2015-08-26 10:34:50,431", "yyyy-MM-dd HH:mm:ss,fff",                                                                                                
               System.Globalization.CultureInfo.InvariantCulture)

查看DateTime.ParseExact Method了解详情。

【讨论】:

但我现在不知道我将有什么类型的输入(美国或英国语言环境)【参考方案4】:

您需要使用DateTime.ParseExact。以下版本:

public static DateTime ParseExact(
    string s,
    string[] formats,
    IFormatProvider provider,
    DateTimeStyles style
)

哪个

将日期和时间的指定字符串表示形式转换为其 DateTime 等效使用指定的格式数组, 特定于文化的格式信息和风格。的格式 字符串表示必须至少匹配一种指定格式 准确或抛出异常。

因此,只要您确切知道日期的可能格式,该用户将输入您就可以使用此方法捕获所有日期。 ' 这个方法更详细的解释请看here 。

【讨论】:

以上是关于如何在 C# 中将日期字符串转换为 DateTime 对象? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中将日期字符串转换为 DateTime 对象? [复制]

如何在 .Net / C# 中将日期转换为 HTTP 格式的日期

如何在 C# 中将字符串转换为 DateTime?

如何在 C# 中将字节 [] 转换为日期时间?

在 C# 中将 APRIL,03/2013 字符串转换为 DateTime [重复]

在 C# 中将十六进制值从 SQL Server 转换为日期时间