Что произойдет, если я установлю CurrentCultureInfo на en-us - PullRequest
1 голос
/ 09 января 2009

Я использую клиентское приложение, которое подключается к удаленной базе данных в США. в результате возникает некоторая двусмысленность даты и времени, например, если в базе данных дата 14 января, то возвращается 13 января.

Что бы я хотел знать, если я установлю CurrentCultureInfo моего Клиента равным моим Серверам, это решит проблему.

Если это можно сделать ... Я хотел бы небольшой пример того же.

Ответы [ 3 ]

1 голос
/ 09 января 2009

Ваша культура используется для форматирования. Проблема, по-видимому, связана с разными часовыми поясами.

Мое простое решение - всегда хранить даты и время в UTC. Для этого вы можете использовать DateTime.UtcNow от клиента и при необходимости преобразовать его обратно в местное время.

0 голосов
/ 09 января 2009

Если вы не можете изменить дату вашего хранения на время UTC и конвертировать туда и обратно при вставке и выборе данных. Тогда, если ваши данные не будут вставлены на сервер, вам придется записать что-то, что скажет вам, откуда пришли данные (я имею в виду, какой часовой пояс у клиента, который вставил данные).

Если ваши данные только вставляются на сервер, вы, вероятно, можете использовать функции SQL GetUTCDate и сравнить их с GetDate, а затем вычесть результат из даты и времени, хранящихся в базе данных. Затем на клиенте используйте DateTime.ToLocalTime () для преобразования возвращаемого значения в местное время. Как я уже сказал, это будет работать только в том случае, если данные вставляются исключительно на сервер или, по крайней мере, клиентами в одном часовом поясе. В противном случае забудь об этом.

0 голосов
/ 09 января 2009

Проблема в том, что в самих США есть несколько разных часовых поясов, поэтому это не может быть решением. Один из обходных путей, о котором я могу подумать, - это установить часовой пояс клиентского компьютера на часовой пояс сервера, но кое-что из этого просто не звучит правильно.

...