У меня есть задача взять дату из поля дата и передать в контроллер посредстовам js object или json.То есть проблема в том что дата в javascript берется как string а передовать нужно именно в format дату.Пока вижу только одно решение передать в контрллер string a там уже приводить к дате.Вопрос есть ли какой нибудь способ конвертировать string в javascript к salesforce date на стороне клиента и передовать в контроллер именно дату а не стринг.
У меня есть задача взять дату из поля дата и передать в контроллер посредстовам js object или json.То есть проблема в том что дата в javascript берется как string а передовать нужно именно в format дату.Пока вижу только одно решение передать в контрллер string a там уже приводить к дате.Вопрос есть ли какой нибудь способ конвертировать string в javascript к salesforce date на стороне клиента и передовать в контроллер именно дату а не стринг.
мне кажется, что при передаче даты на сервер обычным пост-http или пост-http посредством AJAX любые данные - это просто стринги.
Возможно вопрос только в форматировании этого стринга, содержащего дату.
Возможно нужно его отформатировать так, чтобы в контроллере его встретили "как родного".
Но нужно узнать, а в каком виде контроллер ожидает эту стринг-дату.
Как идея: есть браузерный плагин который позволяет смотреть, что передается через AJAX (подробностей не знаю).
создай ВФ страницу с одним дата полем которое находится в перегружаемой AJAX панели. И посмотри, в каком виде твоя дата ушла аджаксом на сервер.
отформатировать JS стринг в ДатаВремя формат можно и средствами JS, но не известно - подойдет ли этот формат, вероятно форматировать придется в ручную.
http://learn.javascript.ru/datetime
но не знаю поможет ли это все, и в правильном ли направленни идут мои размышления.
мне кажется, что при передаче даты на сервер обычным пост-http или пост-http посредством AJAX любые данные - это просто стринги. Возможно вопрос только в форматировании этого стринга, содержащего дату. Возможно нужно его отформатировать так, чтобы в контроллере его встретили "как родного". Но нужно узнать, а в каком виде контроллер ожидает эту стринг-дату. Как идея: есть браузерный плагин который позволяет смотреть, что передается через AJAX (подробностей не знаю). создай ВФ страницу с одним дата полем которое находится в перегружаемой AJAX панели. И посмотри, в каком виде твоя дата ушла аджаксом на сервер. отформатировать JS стринг в ДатаВремя формат можно и средствами JS, но не известно - подойдет ли этот формат, вероятно форматировать придется в ручную. [url]http://learn.javascript.ru/datetime[/url] но не знаю поможет ли это все, и в правильном ли направленни идут мои размышления.
[quote="Den Brown"]мне кажется, что при передаче даты на сервер обычным пост-http или пост-http посредством AJAX любые данные - это просто стринги. [/quote] я тоже так думаю.если потратить немного времени на пермножение секунд new Date(date * 60000); и так далее то все получится.мне удалось передать таким образом в объект готовую дату правда не ту которую хотел но сохранение прошло. Просто я думал что кто-то может знать готовые формулы приведения дат в javascript или что вороде date.parse() как в апексе только на javascript.Вообщем на досуге можно посидеть посчитать даты к нужному формату для salesforce.
По поводу дат. Нужно быть предельно аккуратным с DateTime. Если не задавать никакого формата для даты и вставлять в SOQL (только в строку!!!), то он возьмет в формате с дефолтной (GMT 0.00) таймзоной.
Вот как у меня было:
....
DateTime startDate = DateTime.newInstance(endDate.year(), endDate.month(), endDate.day(), 0, 0, 0);
....
query += ' AND (TestDateTime__c >= ' + startDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') ';
....
Вот если так (выше) положить в строку (!!!!) с дефолтным форматом, то вы будете приятно удивлены дате, которую увидите в SOQL. Чтобы брать нужную (корректную) я брал таймзону текущего юзера.
....
DateTime startDate = DateTime.newInstance(endDate.year(), endDate.month(), endDate.day(), 0, 0, 0);
TimeZone tz = UserInfo.getTimeZone();
....
query += ' AND (TestDateTime__c >= ' + startDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'' , tz.getDisplayName()) ';
....
Ну и не стоит забывать, что на VF page если вывести DateTime, то формат будет GMT +0 00
По поводу дат. Нужно быть предельно аккуратным с DateTime. Если не задавать никакого формата для даты и вставлять в SOQL (только в строку!!!), то он возьмет в формате с дефолтной (GMT 0.00) таймзоной. Вот как у меня было: [code] .... DateTime startDate = DateTime.newInstance(endDate.year(), endDate.month(), endDate.day(), 0, 0, 0); .... query += ' AND (TestDateTime__c >= ' + startDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') '; .... [/code] Вот если так (выше) положить в строку (!!!!) с дефолтным форматом, то вы будете приятно удивлены дате, которую увидите в SOQL. Чтобы брать нужную (корректную) я брал таймзону текущего юзера. [code] .... DateTime startDate = DateTime.newInstance(endDate.year(), endDate.month(), endDate.day(), 0, 0, 0); TimeZone tz = UserInfo.getTimeZone(); .... query += ' AND (TestDateTime__c >= ' + startDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'' , tz.getDisplayName()) '; ....[/code] Ну и не стоит забывать, что на VF page если вывести DateTime, то формат будет GMT +0 00
[quote="Art Vegas"]По поводу дат. Нужно быть предельно аккуратным с DateTime. Если не задавать никакого формата для даты и вставлять в SOQL (только в строку!!!), то он возьмет в формате с дефолтной (GMT 0.00) таймзоной. Вот как у меня было: [code] .... DateTime startDate = DateTime.newInstance(endDate.year(), endDate.month(), endDate.day(), 0, 0, 0); .... query += ' AND (TestDateTime__c >= ' + startDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'') '; .... [/code] Вот если так (выше) положить в строку (!!!!) с дефолтным форматом, то вы будете приятно удивлены дате, которую увидите в SOQL. Чтобы брать нужную (корректную) я брал таймзону текущего юзера. [code] .... DateTime startDate = DateTime.newInstance(endDate.year(), endDate.month(), endDate.day(), 0, 0, 0); TimeZone tz = UserInfo.getTimeZone(); .... query += ' AND (TestDateTime__c >= ' + startDate.format('yyyy-MM-dd\'T\'HH:mm:ss\'Z\'' , tz.getDisplayName()) '; ....[/code] Ну и не стоит забывать, что на VF page если вывести DateTime, то формат будет GMT +0 00[/quote] Да спасибо Артем! нужно эту тему раз юзать как на стороне javascript так и на строне апекс.Почему то был уверен что есть готовые решения для javascript.Точно такие как брать Id apex element через регекс.