Как говорится в названии после того, как я назначил объект DateTime с часовым поясом UTC, он теряет свою информацию TimeZone при назначении DataRow.CZ TimeZone информация потеряна при назначении DateTime DataRow
static void Main(string[] args)
{
DateTime universalTime = DateTime.UtcNow;
DataTable table = new DataTable();
table.Columns.Add("Time", typeof(DateTime));
DataRow row = table.NewRow();
row["Time"] = universalTime;
/* writes Kind: Utc */
Console.WriteLine("Universal time : " + universalTime + ", kind: " + universalTime.Kind);
/* writes Kind: Unspecified */
Console.WriteLine("Same time in DataRow: " + row["Time"] + ", kind: " + ((DateTime)row["Time"]).Kind);
Console.ReadKey();
}
После присвоения DataRow он говорит Kind = Unspecified.
Является ли это ошибкой в DataRow или я делаю что-то не так?
Кажется, его уже ответил [http://stackoverflow.com/questions/3990809/how-to-persist-datetime-kind-while-storing-a-datetime-object -into-a-data-table] – Rwiti
Это имеет значение? Для хранения времени в базах данных сохранение в формате UTC является единственным форматом, который имеет смысл в любом случае. – spender
У дуп-сообщения есть ответ, но также следует помнить, что 'Kind' на самом деле не хранит информацию о часовом поясе. Это просто правило, в котором говорится, как нужно обрабатывать значение при взаимодействии с функциями часового пояса. И, как правило, он не сохраняется при сохранении данных. Вы можете думать о «UTC» как часовом поясе, но типы «Local» или «Unspecified» немного отличаются. Если настойчивость - это то, что вам нужно, вы можете посмотреть «DateTimeOffset». Даже если ваше смещение равно нулю, оно, по крайней мере, будет сохраняться таким образом и не будет потеряно. –