我需要知道将持续字符串16-Aug-78 12:00:00 AM
的确切日期格式。我尝试了各种各样的字符串,例如" ss-MMM-yy hh:mm:ss"。有没有办法找到它转换为任何一般格式。我正在使用CultureInfo.InvariantCulture
类。
答案 0 :(得分:2)
您的字符串格式错误。它必须匹配您的字符串格式完全。您可以改为使用dd-MMM-yy hh:mm:ss tt
格式。
这是LINQPad中的示例。
string s = "16-Aug-78 12:00:00 AM";
var date = DateTime.ParseExact(s, "dd-MMM-yy hh:mm:ss tt",
CultureInfo.InvariantCulture);
date.Dump();
或者,由于dd-MMM-yy hh:mm:ss tt
是InvariantCulture
的标准日期和时间格式,因此您可以直接使用DateTime.Parse
方法;
string s = "16-Aug-78 12:00:00 AM";
var date = DateTime.Parse(s, CultureInfo.InvariantCulture);
date.Dump();
这里有 demonstration
。
有没有办法找到它转换成任何一般格式?
除了创建自己的格式之外,无法获取字符串的格式。只有你可以准确地知道你的字符串格式是什么,计算机不能。
例如; 01/02/2014
可以 2014年2月1日或 2014年1月2日取决于您可以解析它的自定义格式。
答案 1 :(得分:1)
你有错误的格式字符串,你正在使用ss,它应该是dd。本文Custom Date and Time Format Strings解释了自定义格式所需的内容。
使用
"dd-MMM-yy hh:mm:ss tt"
而不是
"ss-MMM-yy hh:mm:ss"
您可以使用DateTime.ParseExact来解析字符串。
DateTime dt = DateTime.ParseExact("16-Aug-78 12:00:00 AM", "dd-MMM-yy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None);
答案 2 :(得分:0)
尝试以下
var dstring = "16-Aug-78 12:00:00 AM";
DateTime result;
var matchingCulture = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(ci => DateTime.TryParse(dstring, ci, DateTimeStyles.None, out result))
答案 3 :(得分:0)
您可以尝试使用DateTime.TryParseExact():
string strDate = "16-Aug-78 12:00:00 AM";
DateTime datDate;
if(DateTime.TryParseExact(strDate , new string[] {"dd-MMM-yy hh:mm:ss tt" },
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out datDate))
{
Console.WriteLine(datDate);
}
else
{
Console.WriteLine("Error in datetime format");
}