При вводе данных CSV (в хранилище BLOB-объектов) со смещением часового пояса, например
2018-08-29T06: 38: 19 + 01: 00
И в наборе данных есть колонка en-GB для столбца.
т.е.
{
"name": "TransactionDateTime",
"type": "Datetime",
"culture": "en-gb"
},
Это приземляется в ADLS как:
2018-08-29 05: 38: 19.0000000
Похоже, что он анализируется как +1, а затем записывается как UTC, хотя культура выходного набора данных en-gb.
В основном мы установили en-gb, поскольку в фабрике данных по умолчанию используется en-us, что для нас не очень разумно.
В документации фабрики данных предлагается просмотреть в документации по c # строки форматирования, поэтому я предполагаю, что она использует реализацию .net Framework.
Если s не содержит информацию о часовом поясе, свойство Kind
Возвращенный объект DateTime - DateTimeKind.Unspecified. Это поведение
можно изменить с помощью флага DateTimeStyles.AssumeLocal, который
возвращает значение DateTime, свойство Kind которого равно DateTimeKind.Local, или
используя DateTimeStyles.AssumeUniversal и
DateTimeStyles.AdjustToUniversal flags, которая возвращает значение DateTime
чье свойство Kind - DateTimeKind.Utc. Если s содержит часовой пояс
информация, время при необходимости конвертируется в местное время, и
свойство Kind возвращаемого объекта DateTime установлено в
DateTimeKind.Local. Это поведение можно изменить с помощью
DateTimeStyles.RoundtripKind флаг, чтобы не конвертировать координированный универсальный
Время (UTC) по местному времени и установить для свойства Kind значение
DateTimeKind.Utc.
Попытка повторить это в c #, возможно, что-то вроде:
var inputInBlobDate = "2018-08-29T06:38:19+01:00";
var outputInADLSDate = "2018-08-29 05:38:19.0000000";
CultureInfo culture = new CultureInfo("en-GB");
var parsed = DateTime.ParseExact(inputInBlobDate, "yyyy-MM-ddTHH:mm:ssK", culture, DateTimeStyles.AdjustToUniversal);
parsed.ToString("yyyy-MM-dd HH:mm:ss.fffffff").Dump(); //2018-08-29 05:38:19.0000000
Верны ли мои теории, что написано как UTC?
Меня беспокоит, как будет обрабатываться британское летнее время, если мы укажем культуру Великобритании. Если только ГБ-культура не является просто строкой форматирования, но я не вижу такой строки форматирования ни в одном из CultureInfo, поэтому не думаю, что она предназначена только для форматирования.