我有一些旧的日志文件我必须解析 - 显然日期时间保存如下: 18/12/2012 11:09:39下午 - 我所有解析这些的尝试都失败了。 我完全迷失了 - 任何帮助或方向都会很棒!
CultureInfo cultureInfo = new CultureInfo( "es-MX" , true );
string date = "18/12/2012 11:09:39 p.m.";
DateTime dt = new DateTime( 2012 , 12 , 18 , 11 , 9 , 39 ).AddHours( 12 );
this.richTextBox1.Text += date + Environment.NewLine;
this.richTextBox1.Text += dt.ToString( cultureInfo ) + Environment.NewLine;
this.richTextBox1.Text += dt.ToString() + Environment.NewLine;
foreach ( var item in richTextBox1.Lines )
{
try
{
DateTime d= DateTime.Parse( item );
this.richTextBox1.Text += d.ToString() + Environment.NewLine ;
}
catch ( Exception ee)
{
this.richTextBox1.Text += ee.Message + Environment.NewLine ;
}
}
答案 0 :(得分:3)
某些日期在日志文件中是正确的,有些日期格式以p结尾。米或者p.m .. 以上所有方法似乎都失败了 - 是的,我尝试了所有方法:( 这是我解决问题的方法:
CultureInfo cultureInfo = new CultureInfo( "es-MX" , true );
Date = DateTime.Parse( date.Replace( "p. m." , "PM" ).Replace( "p.m." , "PM" ).Replace( "." , "" ).ToUpper() , cultureInfo );
答案 1 :(得分:2)
尝试使用DateTime.TryParseExact()。这是我在LINQPad中运行的一个例子。
void Main()
{
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo( "es-MX" , true );
string date = "18/12/2012 11:09:39 p.m.";
DateTime dt = new DateTime( 2012 , 12 , 18 , 11 , 9 , 39 ).AddHours( 12 );
DateTime d;
string[] styles = {"dd/MM/yyyy hh:mm:ss tt"}; // This doesn't have to be an array - could be string
DateTime.TryParseExact(date, styles, cultureInfo, System.Globalization.DateTimeStyles.None, out d);
d.Dump();
}
答案 2 :(得分:0)
尝试使用cultureInfo变量作为Parse的第二个参数。这将使用culture作为格式提供者。
DateTime d = DateTime.Parse( item, cultureInfo );
答案 3 :(得分:0)
问题是你没有指定在调用Parse()时使用的文化。您的调用使用当前线程的CurrentCulture属性:
DateTime d= DateTime.Parse( item );
你需要的神奇咒语是:
DateTime instance = DateTime.Parse( text , CultureInfo.GetCultureInfo("es-MX") ) ;
您的另一种选择是改变当前线程的文化:
CultureInfo mexico = CultureInfo.GetCultureInfo( "es-MX" );
Thread.CurrentThread.CurrentCulture = mexico;
在致电DateTime.Parse()
之前。在启动时这样做你应该很高兴(只要使用墨西哥语西班牙语有助于你的目的。请注意,改变当前的文化不会改变事物的显示方式:这是线程的CurrentUICulture属性的责任。 / p>