提问人:user1006221 提问时间:10/28/2023 更新时间:11/15/2023 访问量:55
奇怪的 DateTime 转换行为
Strange DateTime conversion behaviour
问:
我有一个大的 csv 文件,每行都有一个日期和一个分钟条目;
20000530,172700
这两个字符串应该代表 2000 年 5 月 30 日 17:27
C# 不会将其转换为顶部的 DateTime,因此我尝试使用自定义模式
string datePattern = "yyyymmdd";
DateTime.TryParseExact(d, datePattern, null, DateTimeStyles.AssumeLocal, out dateTest);
string timePattern = "hhmmss";
DateTime.TryParseExact(t, timePattern, null, DateTimeStyles.AssumeLocal, out timeTest);
虽然 C# 理论上将这些对象转换为 DateTime 对象,但它实际上不起作用。
timeTest 对象中的时间几乎总是 00:00,直到它随机决定它不是 00:00。
dateTest 递增日期而不是月份,它始终是 1 月(每个文件都是它自己的年份,所以我不知道它是否会正确递增年份)。
有人可以解释我做错了什么吗?
谢谢。
答:
1赞
Garry
11/15/2023
#1
Capital MM 和 HH 解决了您的问题
string dateString = "20000530,172700";
if (DateTime.TryParseExact(dateString, "yyyyMMdd,HHmmss", null, DateTimeStyles.AssumeLocal, out DateTime result))
{
Console.WriteLine("Parsed DateTime: " + result);
}
else
{
Console.WriteLine("Failed to parse the DateTime.");
}
您可以根据需要分解生成的 datetime 对象
评论
yyyyMMdd
instead of 和 instead of - 自定义日期和时间格式字符串yyyymmdd
HHmmss
hhmmss
hh
小时,使用从 01 到 12 的 12 小时制 “hh”自定义格式说明符 - 小时,使用从 00 到 23 的 24 小时制 “HH”自定义格式说明符HH