LINUX.ORG.RU

JavaScript функция работы со строкой по примеру php кода

 ,


0

1

Здравствуйте, нужно написать вот такое:

<?php
        $start=date_format(date_create(substr($date_range,0,10)), 'Y-m-d 0:0:0');
        $end=date_format(date_create(substr($date_range,13,10)), 'Y-m-d 23:59:59');
?>
Только на JS. Помогите, пожалуйста

Смысл кода в следующем:
Есть строка типа date_range=«02.01.2013 - 03.01.2013» нужно из нее сделать две переменные:
start=«02.01.2013 0:0:0»
и end=«03.01.2013 23:59:59»

★★★

Ответ на: комментарий от zz

Подскажите, пожалуйста, а где входной параметр (т.е. в моем случае это строка «02.01.2013 - 03.01.2013»)?

disee ★★★
() автор топика
Ответ на: комментарий от disee

тогда уж

var parts = str.split ('-');
var d1 = parts[0].split ('.');
var d2 = parts[1].split ('.');
var date1 = new Date (d1[2], d1[1]-1, d1[0]); // ибо месяц от 0 до 11
var date2 = new Date (d2[2], d2[1]-1, d2[0], 23, 59, 59);
«Входной параметр» - переменная «str».

Не проверял, но похоже на правду. Хотя, по-хорошему, вычитать из строки число - не корректно.

З.Ы.: TC, google «javascript date» и первая ссылка. Не стыдно?

solovey ★★
()
Ответ на: комментарий от solovey

хромиум говорит что тут ошибка:

var d1 = parts[0].split ('.');
var d2 = parts[1].split ('.');
Насколько я понял parts[0] (и [1] тоже) являются undefined, вместо того, что бы быть string"ом.

И поэтому ничего не работает.

Не подскажите, как решить эту проблему?

disee ★★★
() автор топика
Ответ на: комментарий от disee

А ты первую строку без изменения копипастишь? Имей в виду, что «str» - это и есть твоя строка с датами.

VirRaa ★★★
()
Ответ на: комментарий от disee

добавить вначале

var str = "02.01.2013-03.01.2013";

И, как я уже говорил, по-хорошему, конструкция d1[1]-1 не корректна, т.к. из строки вычитается число, но JS это хавает...

solovey ★★
()
Ответ на: комментарий от solovey

Суть в том, что если пишу:

var parts = date_range.split ('-');
var d1=parts[0];
var d2=parts[1];
То при выводе d1 и d2 выводится 02.01.2013 и 03.01.2013. Но если пробую эти же переменные еще и сплитать:
var parts = date_range.split ('-');
var d1=parts[0].split('.');
var d2=parts[1].split('.');

var start = new Date (d1[2], d1[1]-1, d1[0]);
var end = new Date (d2[2], d2[1]-1, d2[0], 23, 59, 59);

, то получаю ошибку (в chromium смотрю)

Uncaught TypeError: Cannot call method 'split' of undefined

disee ★★★
() автор топика
Ответ на: комментарий от solovey

после танцев с бубном получил вот что:


var date_range_".$this->id." = $('input[name=\"DateRange_".$this->id."\"]').val();
                var parts = date_range_".$this->id.".split ('-');
                parts[0]=parts[0]+\" \";
                parts[1]=parts[1]+\" \";
                var d1 = parts[0].split ('.')
                var d2 = parts[1].split ('.');
                var start_".$this->id."=(d1[2]-1+1)+\"-\"+d1[1]+\"-\"+d1[0]+\" 0:0:0\";
                var end_".$this->id."=(d2[2]-1+1)+\"-\"+d2[1]+\"-\"+d2[0]+\" 23:59:59\";
работает..

disee ★★★
() автор топика
Последнее исправление: disee (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.