Предполагая, что вы говорите об экземплярах DateTime в DataContract, отправляемых сервером, я не думаю, что существует простой способ сделать это. Упомянутые вами шаблоны не используются (если бы они были, вы могли бы просто взломать экземпляр общего шаблона с помощью отражения для грубого, но простого решения). В конечном итоге DataContractSerializer делегирует задачу внутреннему методу XsdDateTime.ToString (), который жестко задан, чтобы всегда выдавать дробные секунды, если они ненулевые.
Это не элегантно, но использование жестко запрограммированного поведения может быть самым простым решением: просто скопируйте все ваши DateTimes, сбросив миллисекунды до нуля, прежде чем они покинут сервер.
Кроме того, вы можете подключить пользовательский IDispatchMessageFormatter или IDispatchMessageInspector к затронутым операциям. Также нельзя прогуляться по парку, если вы хотите, чтобы они были общими и их легко было подключить.
Просто любопытно - у вас плохо себя ведет клиент, который не понимает доли секунды?