c# - C#从不一致的字符串转换为日期
问题描述
我正在尝试解析一个文件,在该文件中我将日期作为字符串获取,如下所示:
5/18/2020 8:38:32 AM
6/8/2021 10:11:42 PM
11/24/2021 9:21:54 AM
----
我尝试DateTime.TryParse
在我的字符串上使用 a 并在 if 语句中测试“---”大小写,但它成功地只转换了6/8/2021 12:41:56 PM
. 我尝试使用TryParseExact
并指定日期格式,但似乎我应该用一位和两位数字制作一个案例月份,并且日期相同。
我想有些东西我没有看到或不知道。
谢谢你的帮助。
解决方案
这是因为您可能处于除 en-US 之外的文化中,这些日期的格式是。使用 IFormatProvider 参数。IE:
void Main()
{
var dates = @"5/18/2020 8:38:32 AM
6/8/2021 10:11:42 PM
11/24/2021 9:21:54 AM
----";
foreach (string s in dates.Split('\n'))
{
if (DateTime.TryParse(s, new CultureInfo("en-US"), DateTimeStyles.None, out DateTime d))
{
Console.WriteLine(d);
}
}
}
编辑:请注意,.Net fiddle 上的版本略有不同,因为那里的 C# 版本较旧。
推荐阅读
- excel - 将 Google Apps 脚本转换为 VBA
- c++ - 比较 Char 数组
- java - 尝试将本机 SQL 转换为 HQL 时出现异常?
- python - 为什么 python 2 和 3 对于某些十六进制值有不同的打印输出?
- python-3.x - 使用 Pandas 找到每个唯一组的最高值
- javascript - 我的请假申请表中的回形针选项以附加文件
- android - 如何在滑动刷新布局中检索特定用户
- sql-server - DBeaver 连接已关闭 MS SQL
- java - Java 只通过一个对象发送类参数
- dialog - 如何编写代码“如果我在对话框中单击“取消”,对话框将关闭,该字段将不显示任何内容。”?