2010-07-06 3 views
4

У меня есть следующие пользовательские настройки определены в app.config:Как включить миллисекунды в настройках пользователя DateTime?

<userSettings> 
    <MyProject.Properties.Settings> 
     <setting name="LastProcessedDate" serializeAs="String"> 
      <value>07/06/2010 13:05:10</value> 
     </setting> 
    </MyProject.Properties.Settings> 
</userSettings> 

Есть ли способ, чтобы указать, что этот параметр должен быть сериализовать миллисекунды - например 07/06/2010 13:05:10.181 - чтобы я мог точно сравнить его с полем datetime SQL Server?

+0

Использовать собственные строки форматирования даты и времени? – Aren

ответ

9

К сожалению, вы не можете сохранить значения миллисекунды в настройках. Глубоко в методе System.Configuration.SettingsPropertyValue.ConvertObjectToString значение DateTime преобразуется в строку с использованием метода TypeConverter.ConvertToInvariantString, который не создает миллисекунды.

Если вы действительно хотите этого уровня точности, и вы должны сохранить его в пользовательских настройках, вы должны использовать другой тип параметра, например строку, используя настраиваемый формат, который включает миллисекунды. Ни один из стандартных форматов времени не включает миллисекунды.

+1

Спасибо за очень простое решение. Я использовал настройку строки типа и называл DateTime.Parse при чтении настроек и ToString ('yyyy-MM-dd HH: mm: ss.fff') при записи. Работает как шарм! – MCS

1

Вы можете попробовать сохранить его как Int64, который сохранил бы всю ценность DateTime без каких-либо проблем с форматированием или потерей точности.

Смежные вопросы