在 C# 中将 14 个数字转换为日期时间
本文关键字:转换 日期 时间 数字 中将 | 更新日期: 2023-09-27 18:34:13
我有一个 14 个数字,其中 2 个字符是 AM/PM,我想将它们转换为日期时间
例如:515201483742AM
我尝试了以下代码:
DateTime result =
DateTime.ParseExact(dateString, "Mdyyyyhmmsstt",
CultureInfo.CreateSpecificCulture("en-US"));
输出格式错误
515201483742AM
在哪里5 15 2014 8 37 42 AM
月份为M
,没有前导0
一天也d
没有领先的0
小时相同,tt
AM
如果不更改字符串M
无法解析字符串,因为格式说明符可以是两位数,它将映射到将51
解析为一个月。这就是为什么您的操作会抛出FormatException
.与h
格式说明符相同。
这就是为什么我们需要将您的字符串从 515201483742AM
更改为 05152014083742AM
以提供M
格式说明符将映射05
h
格式说明符将映射08
。
您可以使用类似1 的方法;
public static DateTime? ParseDate_Mdyyyyhmmsstt(string date)
{
if (date == null)
return null;
if (date.Length < 14)
return null;
if (date.Length == 14)
date = date.Insert(0, "0").Insert(8, "0");
DateTime dt;
if (DateTime.TryParseExact(date, "Mdyyyyhmmsstt",
CultureInfo.InvariantCulture,
DateTimeStyles.None, out dt))
return dt;
return null;
}
并称它为;
var dt = ParseDate_Mdyyyyhmmsstt("515201483742AM");
Console.WriteLine(dt.Value); // 15.05.2014 08:37:42
1:我知道这不是一个优雅的解决方案,但是当您的月份和小时部分为1位数时,它适用于您的情况。
读取:从字符串 C# 转换日期时间
使用双"MM"和"dd"而不是单"M"和"d"
DateTime result = DateTime.ParseExact(dateString,"MMddyyyyhmmsstt",CultureInfo.CreateSpecificCulture("en-US"));
它会起作用。