Ясно, что setSeconds()
относится к текущему времени. Вы можете использовать alert()
, чтобы увидеть еще большие различия. Однако следующее будет работать так, как вы ожидаете: Заменить:
date.setSeconds(date.getSeconds() + duration);
на:
date.setHours(date.getHours(), date.getMinutes(), date.getSeconds()+ duration, 0);
Обратите внимание, что я обнуляю миллисекунды, вы можете обрабатывать их как хотите. см. рабочий пример jsfiddle
Несколько вещей. Во-первых, к Вашей озабоченности по поводу этих 400 ошибок Вы возвращаетесь, несколько возможностей приходят на ум:
Некоторый другой более общий указатель для помощи Вам вдоль Вашего пути:
(read-buf-nonblock) очень сбивает с толку. Где символ 'c' определен? Почему является 'eof' (gensym) редактором и затем не присвоенный какое-либо значение? Это очень походит на копию байта байтом, сделанную прямо из обязательной программы, и шлепнулось в Lisp. Похоже на то, что Вы повторно реализовали, вот (последовательность чтения). Пойдите посмотреть здесь в Гиперспецификации языка Common LISP и посмотрите, является ли это тем, в чем Вы нуждаетесь. Другая половина из этого должна установить Ваш сокет, который Вы создали, чтобы не заблокироваться. Это довольно легко, даже при том, что документация SBCL почти тиха по теме. Используйте это:
(socket-make-stream socket :input t :output t :buffering :none :timeout 0)
Последняя форма которой (позволяют), (http-подключения) не необходима. Просто оцените
(socket-make-stream socket :input t :output t :buffering :none)
без позволенного, и http-подключение должен все еще возвратить правильное значение.
Замена:
(format stream "~a~%~%" request )
(let ((data (make-string buffer)))
(setf data (subseq data 0
(read-buf-nonblock data
stream)))
(princ data)
(> (length data) 0)))
с
(format stream "~a~%~%" request )
(let ((data (read-buf-nonblock stream)))
(princ data)
(> (length data) 0)))
и заставьте (read-buf-nonblock) возвратить строку данных, скорее это имеющее его присваивается в функции. Таким образом, где Вы имеете buffer
быть присвоенным, создайте переменную buffer
в и затем возвращают его. То, что Вы делаете, называют, полагаясь на "побочные эффекты" и имеет тенденцию производить больше ошибок и тяжелее находить ошибки. Используйте его только, когда Вы имеете к, особенно на языке, который помогает не зависеть от них.
Yikes, вред рук. Но надо надеяться это помогает. Сделанный ввод.:-)
Вот возможность:
HTTP/1.0 определяет последовательность CR LF как маркер конца строки.
~%
директива формата генерирует a #\Newline
(LF на большинстве платформ, хотя см. CLHS).
Некоторые сайты могут быть терпимы к пропавшим без вести CR, другие не так.