Как к DataSet. Заливка со значениями DateTime, принимающими значение по умолчанию к DateTimeKind. UTC?

Какой язык Вы используете? Стандартный способ сделать это было бы чем-то как / ([И следующие] [Oo] {2} |BAR) / с чувствительностью к регистру на, но в Java, например, существует модификатор чувствительности к регистру (? i), который делает все символы направо от него нечувствительными к регистру и (?-i), который вызывает чувствительность. Пример того Java regex модификатор может быть найден здесь .

6
задан galets 10 November 2009 в 23:40
поделиться

1 ответ

Если вы используете SQL Server 2008, то «правильным» решением будет использование типа данных SQL datetimeoffset вместо SQL datetime. datetimeoffset - это новый для SQL 2008 тип даты / времени с учетом часового пояса, который будет преобразован в ADO.NET в тип CLR System.DateTimeOffset , который всегда относится к UTC. Вот сообщение в блоге , в котором подробно рассказывается об этом. Первые несколько результатов поиска в MSDN для DateTimeOffset предоставляют дополнительную справочную информацию.

Если вы не можете изменить схему SQL, в ADO.NET есть свойство, настроенное для этой ситуации: DataColumn.DateTimeMode , которое определяет, добавляется ли местный часовой пояс при сериализации набора данных ( DateTimeMode = DataSetDateTime.UnspecifiedLocal , значение по умолчанию) или сведения о том, не добавляется ли информация о часовом поясе при сериализации ( DateTimeMode = DataSetDateTime.Unspecified ). Вам нужно последнее.

Если я правильно прочитал документы MSDN, вы сможете установить DateTimeMode = DataSetDateTime.Unspecified для DataColumn , о котором идет речь, после того, как DataSet будет заполнен. Это должно сериализовать столбец без часового пояса.

Если вы хотите быть действительно правильным (или в случае, если описанный выше подход не работает), вы можете заранее создать DataTable и установить для этого столбца DateTimeMode = DataSetDateTime.Utc перед Заполните строками. Тогда вы уверены, что отправите дату в формате UTC.

16
ответ дан 8 December 2019 в 14:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: