如何找到日期字符串的确切格式?
Posted
技术标签:
【中文标题】如何找到日期字符串的确切格式?【英文标题】:How to find exact format of a date string? 【发布时间】:2014-05-08 07:31:30 【问题描述】:我需要知道字符串16-Aug-78 12:00:00 AM
的确切日期格式。我尝试了各种字符串,例如“ss-MMM-yy hh:mm:ss”。有什么方法可以找到它以转换为任何通用格式。我正在使用CultureInfo.InvariantCulture
类。
【问题讨论】:
【参考方案1】:您的字符串格式错误。它必须与您的字符串格式完全匹配。您可以改用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();
Custom Date and Time Format Strings
或者,由于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 日,这取决于您可以解析的自定义格式。
【讨论】:
谢谢。它帮助了我。但是是否可以优先尝试几种格式,然后尝试哪种格式是应用程序以获得准确的值。我已经通过嵌套的 try catch 完成了它。有没有更好的办法。我注意到我的格式错误。 @pcbabu 欢迎您。DateTime.TryParseExact
方法 has an overload 采用 字符串数组 的格式。这意味着您可以在方法中提供多种字符串格式。如果您的字符串与您的一种格式匹配,则此方法返回true
。【参考方案2】:
尝试如下
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】:你有错误的格式字符串,你使用 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);
【讨论】:
【参考方案4】:你可以试试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");
【讨论】:
以上是关于如何找到日期字符串的确切格式?的主要内容,如果未能解决你的问题,请参考以下文章