Если вы сохраняете даты как истинные значения даты или даты и времени, ваше приложение вернет необработанные двоичные данные и не будет подвергаться локализации до тех пор, пока вы не создадите строковое представление значений даты.Я предполагаю, что вы смотрите на значения в отладчике или используете Console.WriteLine(theValue);
, который будет использовать текущую локаль.Всегда включайте желаемый формат и / или желаемую культуру при преобразовании нестроковых значений в строки.
Если вы храните даты в виде строк, вам всегда нужно будет точно знать, какой формат вошел в базу данных.
Предполагая, что даты хранятся как date
или datetime
: просто обрабатывайте значения такими, какие они есть, и не конвертируйте их в строки, пока вам не понадобится показать их пользователю:
DateTime theValue = theReader.GetDateTime(fieldOrdinal);
var theValueAsText = theValue.ToString(CultureInfo.InvariantCulture);
var specificTextRepr = theValue.ToString("yyyy-MM-dd HH:mm:ss");
Переменная theValueAsText
будет строковым представлением, не связанным с конкретной культурой.specificTextRepr
будет вашим конкретным текстовым представлением.