[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Битва с Осликом по поводу Date
sergeiss
Наткнулся тут на грабли, думал, что лоб расшибу.

Вот был такой код, в котором s - это строка, содержащая дату-время в формате "YYYY-MM-DD HH:MM:SS", приходит из БД:

this.date = (new Date(s).valueOf();

В Опере и Хроме работает как часы. Я уже всё отладил, радовался "как ребенок" :) И решил в Ослике проверить. И вот тут "нашла коса на камень". Он уперся, говорит "хрен тебе", а я уперся "хрен ли ты тут хренами бросаешься". Вобщем, стал гуглить, морщить лоб, рвать остатки волос на макушке....

Вывод такой. Осёл не хочет принимать строку в этом формате, зараза! И Date.parse() тоже "не понимает" такой формат.
Пришлось извращаться, чтоб Осёл соизволил воспринять мои изыски:
var a = s.split( /[: -]/);

var d = new Date( parseInt(a[0],10), parseInt(a[1],10)-1, parseInt(a[2],10), parseInt(a[3],10), parseInt(a[4],10), parseInt(a[5],10) );

this.date = d.valueOf();


Вопрос. Может быть, есть другие решения, "покрасивее"? Это хоть и компактное, но очень напоминает танцы с бубном на костылях. Или, может, я слишком требователен и всё нормально?

"Убил" часа 2-3 где-то, изругался весь, всякими словами нехорошими в адрес мелкософта...

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
waldicom
Если осел не хочет, значит надо дать ему как он хочет. Ибо если дата приходит из базы, то её можно подготовить.

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Arh

<script>
var s = "2014-12-26 23:59:10";
var date = new Date(s.replace(/(\d+).(\d+).(\d+)/, '$1/$2/$3'));
alert(date);
</
script>


_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
sergeiss
Arh, спасибо smile.gif С утра подумаю еще.

И кстати, у меня тут еще мысль появилась, вскоре после того, как тему создал. Можно ж на стороне ПХП, при подготовке данных, перевести дату в секунды. По объему передаваемых данных примерно то же самое будет. А из секунд даже переводить уже никуда не нужно smile.gif Потому что я дату в виде секунд и обрабатываю. Ну, точнее, в виде миллисекунд.
Можно и Мускуль напрячь, чтобы он сразу в нужном формате выдал...

Изначально об этом не думал, т.к. в Опере и Хроме всё работало исправно.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Invis1ble
Даты в js ещё тот головняк. Юзаю moment.js.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

sergeiss
Всем спасибо smile.gif
Получилось как всегда: задал вопрос и уже после этого "мысль попёрла".
В итоге сделал всё на уровне БД. У меня ж тут аякс используется для подгрузки данных, причем их может быть от нескольких сотен до нескольких десятков тысяч...
Вобщем, в бд получаю время в секундах. И еще, кстати, экономлю на трафике, т.е. и на времени загрузки. Вместо строки "2013-09-14 14-34-23" отправляю "1378380863", на 8 байт меньше. Если, допустим, надо отправить 10000 записей, то экономия практически в 80К байт. Весьма неплохо, если учесть, что данные могут часто отправляться. Чаще порциями по 500-1000 записей, хотя иногда и больше.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.