2010-11-10 3 views
1

Как я могу преобразовать английскую дату 10/29/2010 или любую дату языка в пользовательский формат дата культурыПреобразование строки 10/29/2010 в соответствии с культурой пользователей

Я использую следующий код

CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; 
      cultureInfo.DateTimeFormat. 
      string lng = cultureInfo.TwoLetterISOLanguageName; 
      DateTime dateTime = DateTime.Parse("10/29/2010", cultureInfo); 

, но он вызывает ошибку, когда я пытаюсь ее разобрать.

Любая идея, как я могу решить эту проблему

Thanx

ответ

3

Использование ParseExact с английским (или инвариантны) культуры, чтобы преобразовать строку в DateTime, то вы можете использовать ToString для вывода на даты пользователя формат.

// this is in "d" (= short date) format of the invariant culture 
var englishDateString = "10/29/2010"; 

// convert it to a datetime 
var date = DateTime.ParseExact(englishDateString, "d", CultureInfo.InvariantCulture); 

// now you can output the date in the user's culture 
var localizedDateString = date.ToString("d"); 

Если вы хотите быть явным, вы можете добавить CultureInfo.CurrentCulture в качестве второго параметра ToString, но это не требуется, так как это по умолчанию, если не указано культуры.

1

Вот пример разбора даты США:

DateTime.Parse("10/29/2010", new CultureInfo("en-US")); 
0

Использование DateTime.ParseExact("10/29/2010", "MM/dd/yyyy", CultureInfo.InvariantCulture); вместо DateTime.Parse

После того, как у вас есть DateTime, он больше не связан с конкретной культурой, но может быть выход, однако ты хочешь это. Обычно это один из методов DateTime .ToString или ярлыки, такие как .ToShortDateString(), который использует культуру текущего потока.

Редактировать: Обратите внимание, это помогает, если я помещу месяц и день в правильные места. Упс.

0

Используйте это:

public static string ChangeDateToUserFormat(string dateValue, string dateCulture) 
     { 
      CultureInfo dateCultureInfo = CultureInfo.GetCultureInfoByIetfLanguageTag(dateCulture); 
      DateTime date = DateTime.Parse(dateValue, dateCultureInfo); 
      return date.ToString(CultureInfo.CurrentCulture); 
     } 

Например:

string date = ChangeDateToUserFormat("10\29\2010", "en-US"); 
1

я имел такую ​​же боль, сталкиваясь преобразование даты и я использовал функцию (код ниже), вы можете изменить его, как вы хотите , попробовать его или получить идеи от него и дайте мне знать, если это было полезно


Imports Microsoft.VisualBasic Imports System.Globalization Public Class DatumKonvert1 
Public Shared Function DK1(ByVal myDMstring As String) As Date 
    Dim source As String = myDMstring 
    Dim d As DateTime = DateTime.ParseExact(source, "d'/'M'/'yyyy", CultureInfo.InvariantCulture) 
    Dim resultMydate As String = d.ToString("M'/'d'/'yyyy") 
    Dim mdx = DateTime.ParseExact(resultMydate, "M'/'d'/'yyyy", CultureInfo.InvariantCulture) 
    Return mdx  End Function End Class 
Смежные вопросы