2011-04-07 59 views
1

我需要將datetime轉換爲en-us文化格式...asp.net |時區|格式| CultureInfo

但我們的用戶在不同的地方;有些人跟隨

DD.MM.YYYY HH:MM:SS TT,

我得到一個錯誤

「字符串未被識別爲有效的DateTime 」

在轉換

時區爲MM/DD/YYYY hh:mm:ss tt (zh-cn)。

System.Globalization.CultureInfo oCulture = new System.Globalization.CultureInfo("en-US", false); 

     public string CultureStringFormat(string Date) 
     { 
      DateTime _Datetime = DateTime.Now; 
      try 
      { 
       _Datetime = DateTime.Parse(Date); 
       return _Datetime.ToString("G", oCulture); 
      } 
      catch (Exception ex) 
      { 
       try 
       { 
        _Datetime = DateTime.Parse(Date, oCulture); 
        return _Datetime.ToString("G", oCulture); 
       } 
       catch (Exception e) 
       { 
        MessageBox.Show(e.Message); 
       } 
      } 
      return ""; 
     } 

     public DateTime CultureDateFormat(string Date) 
     { 
      try 
      {    
       return DateTime.Parse(Date, oCulture, DateTimeStyles.NoCurrentDateDefault); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
      return DateTime.Now; 
     } 




    Thread.CurrentThread.CurrentCulture = oCulture; 
    string sDate = CultureStringFormat("28.12.2011 10:15:07"); // i'm getting an Error 
    DateTime dtDate = CultureDateFormat("28.12.2011 10:15:07"); // Error 

    string sDate1 = CultureStringFormat("12.27.2011 10:15:07"); // i'm getting success 12/27/2011 10:15:07 AM 
    DateTime dtDate1 = CultureDateFormat("12.27.2011 10:15:07"); //success 12/27/2011 10:15:07 AM 



     Thread.CurrentThread.CurrentCulture = oCulture; //Without this line ... 

    string sDate = CultureStringFormat("28.12.2011 10:15:07"); // success 12/28/2011 10:15:07 AM 
    DateTime dtDate = CultureDateFormat("28.12.2011 10:15:07"); // Error 

    string sDate1 = CultureStringFormat("12.27.2011 10:15:07");// success 12/27/2011 10:15:07 AM 
    DateTime dtDate1 = CultureDateFormat("12.27.2011 10:15:07");// Wrong 27.12.2011 10:15:07 

回答

1

您需要使用DateTime.TryParseExact。在下面的代碼片段應該讓你在正確的方向開始:

string myDate = "17.11.2011 08:00:00 AM"; 
DateTime parsedDate; 

DateTime.TryParseExact(myDate, 
         "dd.MM.yyyy hh:mm:ss tt", 
         CultureInfo.InvariantCulture, 
         System.Globalization.DateTimeStyles.None, 
         out parsedDate); 
1
public DateTime? GetDate(string dateString) 
{ 
    var formats = new string[] 
    { 
     "dd.MM.yyyy hh:mm:ss", 
     "MM/dd/yyyy hh:mm:ss", 
     "dd.MM.yyyy HH:mm:ss", 
     "MM/dd/yyyy HH:mm:ss", 
     "dd.MM.yyyy hh:mm:ss tt", 
     "MM/dd/yyyy hh:mm:ss tt"   
    }; 
    DateTime date; 
    if (DateTime.TryParseExact(dateString, formats, CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out date)) 
    { 
     return date; 
    } 
    return null; 
}