Лучший способ выбрать и прочитать дату в формате дд / мм / гг? - PullRequest
2 голосов
/ 26 мая 2011

В более ранней версии vb.net 2008 я использовал DateTime для чтения даты в формате dd/mm/yy.Я использую, чтобы изменить информацию о культуре в британский формат.Так что дата будет выбрана на сервере SQL в формате dd/mm/yy.

Но я знаю, что играть с CultureInfo нехорошо.Даже при том, что я использовал следующий способ.

Какие-нибудь другие лучшие идеи для меня?

Sub Form_Load()
    Thread.CurrentThread.CurrentCulture = New CultureInfo("en-GB", False)    
End Sub

Есть ли другие лучшие идеи для меня?Спасибо за идеи.

Спасибо и С уважением.

Ответы [ 4 ]

2 голосов
/ 26 мая 2011

От DateTime до строки:

string s = DateTime.Today.ToString("dd/MM/yyyy");

От строки до DateTime:

DateTime d;
bool success = DateTime.TryParseExact("26/05/2011", "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out d);
1 голос
/ 26 мая 2011

В C # вы можете получить строку даты в желаемом формате, например,

string date = DateTime.Now.ToString("dd/MM/yyyy");

Если вы хотите получить объект DateTime из строкового значения, представляющего DateTime в определенной культуре, вы можете сделать

     DateTime dt = new DateTime();
                DateTime.TryParse("16/01/2011", System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"),
  System.Globalization.DateTimeStyles.None, out dt);
1 голос
/ 26 мая 2011

Вы можете отформатировать дату с помощью CultureInfo, не устанавливая культуру для всей темы, благодаря интерфейсу IFormatProvider:

DateTime d = DateTime.Now;
CultureInfo c = new CultureInfo("en-GB", false);
string s = d.ToString(c.DateTimeFormat);

Это дает дополнительное преимущество, так как у вас нетжестко закодированные форматы, и если пользователь изменяет настройки локализации на своем компьютере, ваше приложение будет отражать их предпочтения.

Вы можете использовать DateTime.TryParse для анализа даты ...

string s = "01/01/2011";
DateTime date;
if (DateTime.TryParse(s, out date))
{
    // Parsed correctly
}
else
{
    // Invalid string!
}

И даже используйте IFormatProvider, чтобы помочь TryParse отработать формат.

CultureInfo c = new CultureInfo("en-GB", false);
string s = "01/01/2011";
DateTime date;
if (DateTime.TryParse(s, c.DateTimeFormat, DateTimeStyles.None, out date))
{
    // Parsed correctly
}
else
{
    // Invalid string!
}
1 голос
/ 26 мая 2011

DateTime -> String

DateTime.Now.ToString( new CultureInfo("fr-FR", false) );

String -> DateTime:

Предпочтительным методом, вероятно, будет DateTime.Parse ()

dateString = "16/02/2008 12:15:12";
try 
{
     dateValue = DateTime.Parse(dateString, new CultureInfo("en-GB", false));
     Console.WriteLine("'{0}' converted to {1}.", dateString, dateValue);
}   
catch (FormatException) 
{
     Console.WriteLine("Unable to convert '{0}'.", dateString);
}

Таким образом, вы не меняете информацию о культуре текущего контекста. Это предполагает, что вы заранее знаете, какой формат будет.

...