如何在 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 格式的日期