Изменение формата даты в пользовательском интерфейсе Yahoo - PullRequest
1 голос
/ 08 марта 2009

Я использую календарь из Yahoo UI следующим образом:

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

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

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

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

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

Ответы [ 4 ]

4 голосов
/ 11 марта 2009

Как правило, лучше всего передавать дату на ваш сервер как метку времени 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

3 голосов
/ 11 марта 2009

bluesmoon также написал две отличные статьи на YUIBlog на тему форматирования даты:

  1. http://yuiblog.com/blog/2009/02/11/date-formatting-pt1-2/
  2. http://yuiblog.com/blog/2009/02/25/date-formatting-pt2/

-Эрик

2 голосов
/ 08 марта 2009

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

0 голосов
/ 06 октября 2011
            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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...