gpt4 book ai didi

C# : How to convert string to DateTime, 其中字符串可以具有任何标准日期时间格式

转载 作者:太空狗 更新时间:2023-10-29 19:49:23 25 4
gpt4 key购买 nike

我发布了一个关于日期时间到字符串转换的问题,我得到了很多令人满意的答案..所以我非常感谢 StackOverflow..
这是字符串操作的另一个问题,我被困住了..

我必须使用 C# 代码转换字符串(来自某些外部源).. 字符串可以具有 DateTime 的这些预期格式..

  1. 02/31/2009 01:59:59 24 小时格式
  2. 02/31/2009 01:59:59 AM 12 小时格式
  3. 2/31/2009 1:59:59
  4. 2/31/2009 1:59:59 AM
  5. 02/01/2009 01:59:59 AM
  6. 2/1/2009 1:59:59
  7. 等等……

我尝试使用 DateTime(Convert.ToInt32(string_date.Substring(6,4)),Int,Int,Int,Int,Int,Int)
即,通过提取月份、日期等的值

但它不起作用..因为我无法完美地提取带有子字符串的值..因为字符串的长度是 Varying
我也尝试提取引用“/”、“space”和“:”出现的值,但它成为瓶颈来推导(非-)出现 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 时可以使用相同的功能来消除异常情况。此外,与可为 null 的类型配对,这可以变得更简洁:

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

现在,如果它无法解析输入,它将简单地返回一个空引用。

关于C# : How to convert string to DateTime, 其中字符串可以具有任何标准日期时间格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com