c# - 将字符串 "7/16/2013 7:00:00 AM"转换为日期时间

标签 c# .net

我很震惊为什么它给我一个错误

Convert.ToDateTime("7/16/2013 7:00:00 AM");

但如果我使用的话效果很好

Convert.ToDateTime(("16/7/2013 7:00:00 AM");

如何将“7/16/2013 7:00:00 AM”转换为 DateTime

最佳答案

您可以使用特定的语言环境,也可以定义 format自己像这样:

 var dt = DateTime.ParseExact("7/16/2013 7:00:00 AM", "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

我用过

  • M 月份 0-12 数字,不带前导零
  • d 天数 0-31,不带前导零
  • yyyy 所有数字的年份
  • 12 小时格式的 M 小时,0-12 不带前导零
  • mm 0-59 分,带前导零
  • ss 0-59 秒,带前导零

作为文化,我确实指定了不变文化,它在所有系统上基本上都是英语。无论系统或线程的当前文化如何,都是一样的。

您的问题确实源于您确实尝试使用系统中相同的线程区域设置处理来自不同区域设置的日期,这似乎是英语。要正确处理日期,您需要知道它是在哪个区域设置中输入的,以便能够正确解析它。某些语言环境确实会切换,例如月份和日期,就像您的示例中一样。有些使用不同的分隔符,甚至其他文化对 . , 字符作为千位分隔符和小数点。

德语使用 , 作为小数点,而 .作为千位分隔符。日期看起来像

“24.12.2013 14:25:59”

没有 AM/PM 没有/但是有很多点。

关于c# - 将字符串 "7/16/2013 7:00:00 AM"转换为日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18029580/

相关文章:

c# - Windows Azure 存储的默认顺序是什么?

c# - 如何在单例类中使用接口(interface)

c# - 强名称验证失败

c# - 启用 PROGUARD - Xamarin.Android

c# - PowerShell 写入输出缺失信息 - 仅打印第一个对象

.net - Saxon 9.x vs XQSharp vs AltovaXML for .net

c# - 如何将 C# 控制台项目更改为 Windows 窗体应用程序项目?

.net - 如何将函数调用嵌入到另一个函数中?

.net - 从 UserControl 的子控件传递事件 - 最直接的方法?

c# - ASP.NET-5 测试库不发现主代码