Σ * не набор всех языков. Это один язык, который включает в себя все строки.
DFA не могут распознавать любой язык, который требует бесконечного количества состояний. Например, a ^ nb ^ n (язык, содержащий равное количество a и b). Для каждого i набор действительных суффиксов после a ^ i различен, поэтому каждый a ^ i должен приводить к другому состоянию, а число i не ограничено.
См .: https://en.wikipedia.org/wiki/Myhill%E2%80%93Nerode_theorem
.
Это не хорошая идея предположить, что смещение является многими часами или получасом - вокруг существуют, конечно, часовые пояса четверти часа.
Используя миллисекунды для смещения является, вероятно, самым гибким, но я утверждал бы, что минуты намного легче считать. Если Вы когда-либо собираетесь посмотреть на "необработанные" данные в базе данных, легче понять значение 60 = 1 час, чем 3600000. Я не могу вообразить Вас действительно необходимостью в частях минут как смещение.
Нормализуйте весь DateTimeOffsets к общему смещению, предпочтительно UTC. Затем просто сохраните DateTime, как обычно. После восстановления извлечения смещение, которое должно быть константой. Это не сохраняет смещение возникновения, но смещение неоднозначно к часовому поясу так или иначе.
Если бы на самом деле необходимо знать источник даты/времени, то необходимо было бы хранить некоторую информацию часового пояса. Это вызвано тем, что простое смещение не может однозначно представить источник времени. См. (несколько запутывающее) документацию MSDN о Выборе Between DateTime, DateTimeOffset и TimeZoneInfo.
сохраните дату и время как дату и время и смещение как миллисекунды (bigint)