формат даты и времени поля createdon

При компиляции следующего кода всегда возникает одна и та же досадная ошибка. Я пытаюсь сравнить поле «создано» с текущей датой. Я пробовал несколько форматов даты, но все еще не работает...

Сведения об ошибке: «Формат даты и времени для 23.05.2012 14:01:55 недействителен»

Фрагмент кода:

DateTime d = DateTime.Now;
                String.Format("{0:dd/MM/YYYY HH:mm:ss}", d);

                FetchExpression fetch = new FetchExpression(@"
                    <fetch distinct='false' mapping='logical'>
                      <entity name='" + context.PrimaryEntityName + "'><filter type='and'><condition attribute='createdon' value='" + d + "' operator='ne'></condition></filter><link-entity name='new_contrats' alias='nombreligne' from='new_contratsid' to='new_contratsid'><filter type='and'><condition attribute='new_contratsid' value='" + contrats.Id + "' operator='eq'></condition></filter></link-entity></entity></fetch>");

Любая помощь будет здорово!


person MademoiselleLenore    schedule 23.05.2012    source источник
comment
Я думаю, что значение хранится в UTC, и, возможно, вам нужно будет преобразовать DateTime в с помощью .ToUniversal() или .UtcNow() ИЛИ вам следует попробовать сортируемый шаблон даты и времени yyyy-MM-ddTHH:mm:ss   -  person V4Vendetta    schedule 23.05.2012
comment
+1 для гггг-мм-ддчч:мм:сс... это то, что я использую.   -  person John Hoven    schedule 23.05.2012
comment
Спасибо вам обоим за ваши ответы, я уже пробовал .ToUniversal() и .UtcNow(), только что попробовал сортируемый шаблон даты и времени, но все равно безрезультатно!   -  person MademoiselleLenore    schedule 23.05.2012


Ответы (2)


Может помочь мой публикация в блоге. По сути, формат UTC, но локальное смещение исходного пользователя может повлиять на базовое значение в базе данных.

person Greg Owens    schedule 23.05.2012
comment
Привет Грег, спасибо за ваш ответ. Моя проблема в том, что я не могу сменить оператора и до сих пор не могу найти нужный формат!! - person MademoiselleLenore; 23.05.2012
comment
Итак, если вы используете формат UTC, вы все равно получаете ошибку The date-time format for <some-date> is invalid? - person Greg Owens; 23.05.2012
comment
Да, но я заметил, что существует разница в два часа между временем, указанным в сообщении об ошибке, и фактическим временем... - person MademoiselleLenore; 23.05.2012
comment
Ну, разница во времени будет из-за смещения между UTC и вашим местным временем. Я предполагаю, что вы находитесь во Франции, и поэтому текущее смещение в этом месте составляет 2 часа. - person Greg Owens; 23.05.2012
comment
И я не понимаю, как вы получаете ошибку формата. Можете ли вы вставить (в свой исходный вопрос) обновление с вашим полным FetchXml, сгенерированным вашим кодом, перед выполнением? - person Greg Owens; 23.05.2012
comment
О Боже, наконец-то это заработало... Вот так: DateTime d = DateTime.Now; var now = String.Format({0:yyyy-MM-ddTHH:mm:ss},d); А потом использовать now в fetchXml... Глупый я... - person MademoiselleLenore; 23.05.2012

Возможно, будет проще работать либо в Linq to CRM, либо в выражениях запросов, а не в Fetch XML. Вам не нужно беспокоиться о форматировании, так как вы работаете с объектами.

person Daryl    schedule 24.05.2012
comment
Привет Дэрил! Я действительно не чувствую себя комфортно с выражениями Linq to CRM или Query. Является ли msdn хорошим способом начать работу? Или не могли бы вы посоветовать мне хороший сайт или книгу? Спасибо ! - person MademoiselleLenore; 24.05.2012
comment
В SDK есть масса примеров. Если вы еще не знаете linq, я бы сосредоточился на выражениях запросов. Операторы linq в любом случае переводятся в QE, а реализация CRM поставщика linq имеет несколько ошибок. - person Daryl; 24.05.2012
comment
Спасибо Дэрил! Тогда я начну с выражений запросов! - person MademoiselleLenore; 24.05.2012