C# 胜利。表单-将字符串转换为DateTime
我有多个字符串输入,如下所示:-C# 胜利。表单-将字符串转换为DateTime,c#,string,winforms,date,datetime,C#,String,Winforms,Date,Datetime,我有多个字符串输入,如下所示:- 2017年9月5日 2017年9月5日下午13:56 2017年9月5日下午1:56 2017年9月5日13:56:00 2017年9月5日01:56:00下午 现在,我如何将上述示例转换为DateTime格式(dd/MM/yyyy hh:MM:ss tt) 我已经试过了 ParseExact-当用户将2017年9月5日作为值时,它会给出错误(因为格式不匹配) DateTime.ParseExact(ValueByuser,“dd/MM/yyyy HH:MM:s
DateTime.ParseExact(ValueByuser,“dd/MM/yyyy HH:MM:ss tt”,null)代码>
DateTime.TryParse(DatePass,out-Dtp)代码>
您可以使用接受格式数组的
ParseExact
或TryParseExact
重载,并传递希望支持的所有格式。例如
var formats = new[]
{
"dd/MM/yyyy",
"dd/MM/yyyy HH:mm",
"dd/MM/yyyy HH:mm tt",
"dd/MM/yyyy HH:mm:ss",
"dd/MM/yyyy HH:mm:ss tt",
};
您还应指定CultureInfo.InvariantCulture
作为格式提供程序,例如:
var d = DateTime.ParseExact(s,
formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
我相信以上内容将与您的所有示例输入匹配,但第二个(
2017年9月05日13:56 PM
)除外,我假设它是一个打字错误,应该是2017年9月05日13:56
,不带am/PM指示器。您可以使用接受格式数组的parseeExact
重载,并传递您想要支持的所有格式。例如
var formats = new[]
{
"dd/MM/yyyy",
"dd/MM/yyyy HH:mm",
"dd/MM/yyyy HH:mm tt",
"dd/MM/yyyy HH:mm:ss",
"dd/MM/yyyy HH:mm:ss tt",
};
您还应指定CultureInfo.InvariantCulture
作为格式提供程序,例如:
var d = DateTime.ParseExact(s,
formats, CultureInfo.InvariantCulture, DateTimeStyles.None);
我相信上述内容将与您的所有样本输入相匹配,但第二个(
2017年9月05日13:56下午
)除外,我认为这是一个打字错误,应该是2017年9月05日13:56
,没有am/PM指示器。您可以执行以下操作:
string dd = "05 / 09 / 2017 13:56:00";
string newdate = dd.Replace("/", "-");
DateTime DT = DateTime.Parse(newdate);
您可以执行以下操作:
string dd = "05 / 09 / 2017 13:56:00";
string newdate = dd.Replace("/", "-");
DateTime DT = DateTime.Parse(newdate);
同意。由于输入格式与任何语言环境都不匹配(它使用24小时时钟和am/pm指示器,世界上没有人使用!),因此唯一的解决方案是分别明确列出所有支持的格式。同意。由于输入格式与任何语言环境都不匹配(它使用24小时时钟和am/pm指示器,世界上没有人使用!),因此唯一的解决方案是分别明确列出所有受支持的格式。世界上谁使用24小时时钟和am/pm指示器?世界上谁使用24小时时钟和am/pm指示器?