Регистрация  |  Вход

Конвертация даты из Javascript к DateFormat

У меня есть задача взять дату из поля дата и передать в контроллер посредстовам 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]

но не знаю поможет ли это все, и в правильном  ли направленни идут мои размышления.

Den Brown
мне кажется, что при передаче даты на сервер обычным пост-http или пост-http посредством AJAX любые данные - это просто стринги.

я тоже так думаю.если потратить немного времени на пермножение секунд new Date(date * 60000); и так далее то все получится.мне удалось передать таким образом в объект готовую дату правда не ту которую хотел но сохранение прошло.
Просто я думал что кто-то может знать готовые формулы приведения дат в javascript или что вороде date.parse() как в апексе только на javascript.Вообщем на досуге можно посидеть посчитать даты к нужному формату для salesforce.

[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

Art Vegas
По поводу дат. Нужно быть предельно аккуратным с 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


Да спасибо Артем! нужно эту тему раз юзать как на стороне javascript так и на строне апекс.Почему то был уверен что есть готовые решения для javascript.Точно такие как брать Id apex element через регекс.

[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 через регекс.