C# 如何解析";“字符串”;至;日期时间“;加上;A.m、 ";或;Pm、 ";格式(不是上午/下午)?
我需要使用函数C# 如何解析";“字符串”;至;日期时间“;加上;A.m、 ";或;Pm、 ";格式(不是上午/下午)?,c#,.net,datetime,C#,.net,Datetime,我需要使用函数DateTime.ParseExact()将此DateTime字符串(“6/12/2018 12:00:03 a.m.”)转换为DateTime类型 我使用此选项转换了字符串,它可以工作: var date = "6/01/2018 12:00:03 a. m."; var x=Convert.ToDateTime(date); 此外,我还能够使用DateTime.ParseExact()转换此字符串(“6/12/2018 12:00:03”),但当日期不包含指示符a时。m、
DateTime.ParseExact()
将此DateTime
字符串(“6/12/2018 12:00:03 a.m.”
)转换为DateTime
类型
我使用此选项转换了字符串
,它可以工作:
var date = "6/01/2018 12:00:03 a. m.";
var x=Convert.ToDateTime(date);
此外,我还能够使用DateTime.ParseExact()
转换此字符串(“6/12/2018 12:00:03”
),但当日期不包含指示符a时。m、
或p。m、
:
var date = "6/01/2018 12:00:03";
var x=DateTime.ParseExact(date, "d/MM/yyyy h:mm:ss", CultureInfo.InvariantCulture);
当时间部分包含a时,如何转换该日期时间字符串。m、
或p。m、
使用DateTime.ParseExact()
函数的部件?这就是它们的用途
但是请记住,这个tt
说明符不会解析a。m、
或a.m.
字符串。如果您的字符串具有这些属性,则必须操作字符串,例如删除a
和m
之间的点和/或空格等。。它还解析AM
和PM
。这就是它们的用途
但是请记住,这个
tt
说明符不会解析a。m、
或a.m.
字符串。如果您的字符串具有这些属性,则必须操作字符串,例如删除a
和m
之间的点和/或空格等。。它还解析AM
和PM
。您必须首先标准化AM和PM字符串
var dateStr = "6/01/2018 12:00:03 a. m.";
var cleanDate = dateStr.Replace("a. m.", "AM").Replace("p. m.","PM");
var date = DateTime.ParseExact(cleanDate, "d/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture)
您必须首先标准化AM和PM字符串
var dateStr = "6/01/2018 12:00:03 a. m.";
var cleanDate = dateStr.Replace("a. m.", "AM").Replace("p. m.","PM");
var date = DateTime.ParseExact(cleanDate, "d/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture)
因为
a。m、
和p。m、
是AM和PM的非标准标识符,您需要根据所需的区域设置(您当前使用的是固定区域设置)创建自己的自定义设置,并修改其和属性。然后,您可以使用格式说明符进行解析,如中所述,并将自定义的DateTimeFormatInfo
传递给:
出于性能原因,您可能希望静态缓存DateTimeFormatInfo
,如图所示,例如
或者,有几种文化确实使用a。m、
和p。m、
作为AM和PM指示符,主要是西班牙语和加泰罗尼亚语,您的应用程序可能以其中一种文化为基础运行。您可以通过以下方式发现所有此类文化:
foreach (var info in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
if (info.DateTimeFormat.AMDesignator == "a. m." && info.DateTimeFormat.PMDesignator == "p. m.")
{
Console.WriteLine("Culture {0} ({1}) has the required AM and PM designators.", info.DisplayName, info.Name);
}
}
哪个输出
Culture Catalan (ca) has the required AM and PM designators.
Culture Catalan (Andorra) (ca-AD) has the required AM and PM designators.
Culture Catalan (Catalan) (ca-ES) has the required AM and PM designators.
Culture Valencian (Spain) (ca-ES-valencia) has the required AM and PM designators.
Culture Catalan (France) (ca-FR) has the required AM and PM designators.
Culture Catalan (Italy) (ca-IT) has the required AM and PM designators.
Culture Spanish (Equatorial Guinea) (es-GQ) has the required AM and PM designators.
Culture Spanish (Mexico) (es-MX) has the required AM and PM designators.
Culture Spanish (Philippines) (es-PH) has the required AM and PM designators.
您可以通过打印到控制台来检查当前区域性的AM和PM指示符:
Console.WriteLine("Current culture AMDesignator=\"{0}\" and PMDesignator=\"{1}\".",
CultureInfo.CurrentCulture.DateTimeFormat.AMDesignator,
CultureInfo.CurrentCulture.DateTimeFormat.PMDesignator);
您可以在这些区域性中的任意一种中解析日期
字符串,并获得所需的结果:
var formatInfo = CultureInfo.GetCultureInfo("es-MX");
var x = DateTime.ParseExact(date, "d/MM/yyyy h:mm:ss tt", formatInfo);
如果您用户的当前区域性是这些区域性之一,您可以通过(或如果合适):
演示小提琴。因为
a。m、
和p。m、
是AM和PM的非标准标识符,您需要根据所需的区域设置(您当前使用的是固定区域设置)创建自己的自定义设置,并修改其和属性。然后,您可以使用格式说明符进行解析,如中所述,并将自定义的DateTimeFormatInfo
传递给:
出于性能原因,您可能希望静态缓存DateTimeFormatInfo
,如图所示,例如
或者,有几种文化确实使用a。m、
和p。m、
作为AM和PM指示符,主要是西班牙语和加泰罗尼亚语,您的应用程序可能以其中一种文化为基础运行。您可以通过以下方式发现所有此类文化:
foreach (var info in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
if (info.DateTimeFormat.AMDesignator == "a. m." && info.DateTimeFormat.PMDesignator == "p. m.")
{
Console.WriteLine("Culture {0} ({1}) has the required AM and PM designators.", info.DisplayName, info.Name);
}
}
哪个输出
Culture Catalan (ca) has the required AM and PM designators.
Culture Catalan (Andorra) (ca-AD) has the required AM and PM designators.
Culture Catalan (Catalan) (ca-ES) has the required AM and PM designators.
Culture Valencian (Spain) (ca-ES-valencia) has the required AM and PM designators.
Culture Catalan (France) (ca-FR) has the required AM and PM designators.
Culture Catalan (Italy) (ca-IT) has the required AM and PM designators.
Culture Spanish (Equatorial Guinea) (es-GQ) has the required AM and PM designators.
Culture Spanish (Mexico) (es-MX) has the required AM and PM designators.
Culture Spanish (Philippines) (es-PH) has the required AM and PM designators.
您可以通过打印到控制台来检查当前区域性的AM和PM指示符:
Console.WriteLine("Current culture AMDesignator=\"{0}\" and PMDesignator=\"{1}\".",
CultureInfo.CurrentCulture.DateTimeFormat.AMDesignator,
CultureInfo.CurrentCulture.DateTimeFormat.PMDesignator);
您可以在这些区域性中的任意一种中解析日期
字符串,并获得所需的结果:
var formatInfo = CultureInfo.GetCultureInfo("es-MX");
var x = DateTime.ParseExact(date, "d/MM/yyyy h:mm:ss tt", formatInfo);
如果您用户的当前区域性是这些区域性之一,您可以通过(或如果合适):
演示小提琴。可能重复@WelcomeOverflow-不太可能,AM和PM字符串是非标准的
Convert.ToDateTime(“6/12/2018 12:00:03 a.m.”)
失败并引发异常,请参阅。您正在分析的区域设置是什么?可能是@WelcomeOverflow的重复-不太可能,AM和PM字符串是非标准的Convert.ToDateTime(“6/12/2018 12:00:03 a.m.”)
失败并引发异常,请参阅。你是在什么地方解析的?