Этого можно добиться, создав экземпляр CultureInfo по вашему выбору и передав его в качестве параметра в функции форматирования (например, ToString). Только не назначайте его Thread.CurrentThread.CurrentCulture или Thread.CurrentThread.CurrentUICulture, так как это изменит культуру приложения как таковую.
В вашем коде:
CultureInfo myCulture = CultureInfo.GetCultureInfo("en-US");
Console.WriteLine(DateTime.Now.ToString(myCulture));
Если ваш код выполняет внешний код, и вы хотите заставить этот код использовать вашу внутренне выбранную культуру, вы можете сделать это, создав новый поток, назначив культуру этому потоку, а затем заставив этот поток выполнить код. Обязательно обратите внимание на проблемы с многопоточностью, связанные с этим подходом.
Образец резьбы:
string formattedDate = string.Empty;
Thread t = new Thread(delegate()
{
// call external code without specifying culture
formattedDate = DateTime.Now.ToString();
waitHandle.Set();
});
t.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
t.Start();
waitHandle.WaitOne(); // wait for the thread to finish
Console.WriteLine(formattedDate);
В качестве последней точки; Я не знаю , почему вы хотите переопределить CurrentCulture, но я бы посоветовал вам дважды подумать, прежде чем делать это. Пользователи привыкли видеть даты, отформатированные в соответствии с их языком; изменение, которое может сбить с толку, особенно если это происходит только в одной части пользовательского интерфейса.