В прошлом у меня были похожие проблемы с сериализацией даты и времени.
Я бы порекомендовал вам оставить поле даты и времени и использовать вместо него строку. Таким образом, вы полностью контролируете, в каком формате объект даты и времени вводится в ваш набор данных.
После того, как вы ввели его в виде строки, вам нужно записать, в какой культуре и в каком формате записывается дата и время. Вы можете либо жестко кодировать эти два значения в программном обеспечении, и надеяться, что они не изменятся (не идеально). , Перетащите их в файл .config (лучше).
или
Вы добавляете эти дополнительные поля в свой набор данных.
MyDateField - DateTime as a string
Format. - "dd/MM/yyyy HH:mm:ss" (for example)
Culture - "EN-US"
Поэтому, когда вы читаете свою дату из своего DataSet, чтобы создать экземпляр объекта DateTime, который вы затем используете.
var dateTime = DateTime.ParseExact([mydatefield], [format], new cultureInfo([culture]));
* Обратите внимание, что поля внутри [] - это значения, извлеченные из строки в наборе данных.
Таким образом, вы можете использовать это поле даты и времени на любом компьютере, так как вы указываете в наборе данных, какой поставщик культуры и формата использовать.
Вам нужно будет проводить рефакторинг везде, где вы создаете поле даты и времени из набора данных, чтобы использовать эту информацию о провайдере даты и культуре.
Лично я бы пошел с чтением информации о формате и культуре из файла .config, так как они вряд ли будут меняться построчно в вашем наборе данных.