2009-03-08 3 views
1

я использую календарь от Yahoo UI следующим образом:Изменение формата даты в Yahoo UI

CALDATE = (calDate.getMonth() + 1) + '/' + calDate.getDate () + '/' + calDate.getFullYear();

Это отображает формат MMDDYYYY.

Я хочу изменить этот формат на YYYY-MM-DD, чтобы я мог вставить его в базу данных MySQL. Я изменил код:

CALDATE = calDate.getFullYear() + '-' + (calDate.getMonth() + 1) '-' + calDate.getDate();

Это сработало, но проблема в том, что, когда я хочу изменить выбранную дату, календар не отображает дату и вместо этого показывает NAN.

ответ

2

Вы должны изменить формат даты непосредственно перед ее вставкой на серверной стороне, дать стороне клиента желаемый формат и изменить дату позже.

4

Обычно лучше передать дату на задний план как временную метку unix и преобразовать ее в базу данных. В коде, где построить данные POST для сервера, вы бы передать что-то вроде этого:

var t = calDate.getTime()/1000;

Обратите внимание на разрыв на 1000. Это необходимо потому, что JavaScript метки времени в миллисекундах, в то время как MySQL требует секунд.

В вашем SQL заявление, вы будете передавать метку времени, как есть, и использовать функцию FROM_UNIXTIME, чтобы преобразовать его в требуемый формат:

INSERT INTO ... VALUES (FROM_UNIXTIME($t), ...)

Естественно будет некоторый код между, который преобразует t из javascript в $t в вашем сценарии конца, а затем передает это на SQL.

Теперь, если вам действительно нужно отформатировать даты на передней панели, вы можете воспользоваться удобной утилитой YAHOO.util.Date. Просто сделать что-то вроде этого:

alert(YAHOO.util.Date.format(calDate, {format: "%Y-%m-%d" }));

Намного проще, чем вызов getFullYear, getMonth и getDate

0
  cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "-"); 

      cal1.cfg.setProperty("MDY_YEAR_POSITION", 1); 
      cal1.cfg.setProperty("MDY_MONTH_POSITION", 2); 
      cal1.cfg.setProperty("MDY_DAY_POSITION", 3); 
Смежные вопросы