如何找到日期字符串的确切格式?

时间:2014-05-08 07:31:31

标签: c# string datetime date-format culture

我需要知道将持续字符串16-Aug-78 12:00:00 AM的确切日期格式。我尝试了各种各样的字符串,例如" ss-MMM-yy hh:mm:ss"。有没有办法找到它转换为任何一般格式。我正在使用CultureInfo.InvariantCulture类。

4 个答案:

答案 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 ttInvariantCulture的标准日期和时间格式,因此您可以直接使用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");
 }