Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/53: Рейтинг темы: голосов - 53, средняя оценка - 4.85
 Аватар для Wild Wolf
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260

Работа с датой

28.09.2011, 09:44. Показов 10972. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте!
Подскажите, пожалуйста, решение вот такого вопроса:
Мне нужно отобразить пользователю на экране время, которое я передаю строкой в таком виде: "24.03.2011 5:06:23". Причем показать нужно только время.
Для этого, по моей задумке, нужно преобразовать эту строку в дату, а затем сделать что-то типа getTime();
Пробую преобразовать строку:
JavaScript
1
var dt = Date.parse("24.03.2011 5:06:23");
После чего dt приобретает значение NaN.
Изменяю значение строки:
JavaScript
1
var dt = Date.parse("24/03/2011 5:06:23");
dt возвращается громадным числом (я так понимаю, что это число миллисекунд).
Я не представляю, как работать с ними? Зачем мне миллисекунды, и как мне выдрать из них "5:06:23"?

Ладно, эту проблему можно решить тупо обрезав строку и показывая лишь последние 8 символов.

Тогда следующая проблема, которую не решить таким способом:
Мне нужно показывать продолжительность: из текущей даты, которую я получаю методом getDate() вычесть дату "24.03.2011 5:06:23", которая в виде строки! Или в крайнем случае как огромное количество миллисекунд.

Что ж делать то?

Добавлено через 21 минуту
Кстати, может это не миллисекунды вовсе?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.09.2011, 09:44
Ответы с готовыми решениями:

Работа с датой
Здравствуйте. Нужно вывести текущую дату, не могу понять как это сделать, смог сделать лишь только так: <span...

работа с датой
Нужно на странице ввести число в текстовое поле (число месяца), присутствует список месяцев. Нужно вывести в строке состояния число месяца...

Работа с датой в JavaScript
Добрый день. Что-то никак не могу сообразить, как определять: - порядковый номер предыдущей недели (по ISO-8601) - дату...

7
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
28.09.2011, 11:11
Можно сделать так:
JavaScript
1
var dt = new Date(Date("24.03.2011 5:06:23"));
Теперь для dt работают методы:
JavaScript
1
dt.getHours(); dt.getMinutes(); dt.getSeconds(); dt.getDay()
и т.д.
Вот из этого и собираем дату, как нам удобно. Кстати, возможно, вас устроит форма отображения dt как такового.

Далее, отвечая на ваш вопрос, зачем вам миллисекунды, — представление в миллисекудах нужно как раз для того, чтобы вычислять разницу между датами. Переводим оба значения даты в миллисекунды функцией Date.parse() и вычисляем разницу. Конечно, разница тоже будет в миллисекундах, но ведь можно привести её в нужный вам вид. Например, вычислим разницу между датами, выраженную в сутках:
JavaScript
1
(Date.parse(Date())-Date.parse(dt))/1000/60/60/24
Здесь вначале делим на 1000, переводя разницу в секунды, потом на 60, переводя в минуты, потом ещё на 60, переводя в часы, затем на 24, переводя в сутки. Само собой, удобнее сразу поделить на 86400000. Конечно, лучше сделать функцию. Например:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
function getDateDiff(date1,date2,typeOfDiff)
{/* 
        Принимает две строковых даты, вычитает из первой даты вторую, typeOfDiff
    может быть строкой: "y","mon","d","h","min","s".
        Разница вычисляется, соответственно: в годах, в месяцах
    (30 дней в месяце), в днях, в часах, в минутах или в секундах.
        Если параметр опущен, возвращается разница в миллисекундах.
*/
    var divider=1;
    switch(typeOfDiff)
    {
        case "y":
            divider=31536000000;
        break;
        case "mon":
            divider=2592000000;
        break;
        case "d":
            divider=86400000;
        break;  
        case "h":
            divider=3600000;
        break;
        case "min":
            divider=60000;
        break;
        case "h":
            divider=1000;
        break;
    }   
    return ((Date.parse(date1)-Date.parse(date2))/divider)
     
}
//  А вот пример использования:
alert(getDateDiff(Date(),"2011.09.28","h"));
В роли date2 может выступать, например, ваш объект dt. Функция возвращает неокруглённое значение. Если поковырять её, можно заменить, например, date1 на this и прошить её в Date.prototype. Тогда можно будет делать так:
JavaScript
1
dt.getDateDiff(Date(),"d");
Добавлено через 26 минут
Кстати, вам же время нужно в нормальном виде получить? Я набросал расширение для Date(), позволяющее получить «человеческое» время. Вдруг пригодится.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Date.prototype.getRealTime=function()
{
    var txt=addZero(this.getHours());
    txt+=":"+addZero(this.getMinutes());
    txt+=":"+addZero(this.getSeconds());
    return (txt);
    
    function addZero(tx)
    {
        tx=String(tx);
        if (tx.length<2)
        {
            tx="0"+tx;
        }
        return(tx);
    }
}
// Пример использования
dt=new Date();
alert (dt.getRealTime());
1
 Аватар для Wild Wolf
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
28.09.2011, 12:02  [ТС]
А почему, когда я пытаюсь выполнить
JavaScript
1
var dt = new Date(Date("24.03.2011 5:06:23"));
он мне даёт не 24.03.2011 5:06:23, а текущую дату и время?

Добавлено через 7 минут
Спасибо! конечно пригодится!

Добавлено через 2 минуты
Что то не то у меня получается с преобразованием строки...
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
28.09.2011, 12:28
Гхм. Потому что я ошибся. Прошу прощения. Нечасто работаю с датой, увидев дату в верном формате, решил, что подобрал правильное решение.
JavaScript
1
var dt = new Date("2011.03.24 5:06:23");
Это должно выглядеть так. Обратите внимание на обратный порядок в дате: год.месяц.день. Тогда обработается нормально.
1
 Аватар для Wild Wolf
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
29.09.2011, 09:32  [ТС]
Так возвращал NaN:
JavaScript
1
var dt = new Date("2011.03.24 5:06:23");
Дату возвращает так:
JavaScript
1
var dt = new Date("2011/03/24 5:06:23");
1
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
29.09.2011, 10:44
Интересно. В Хромом всё ок. Проверил сейчас IE, действительно косяк есть. А в каком браузере вы тестили? Спасибо за инфо.
0
 Аватар для Wild Wolf
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
29.09.2011, 12:07  [ТС]
Тестировала в IE 7
0
Просто любитель
 Аватар для GuardCat
626 / 464 / 120
Регистрация: 20.01.2011
Сообщений: 865
Записей в блоге: 2
29.09.2011, 12:12
В IE8 та же картина. Интересно протестировать в IE9...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.09.2011, 12:12
Помогаю со студенческими работами здесь

Как работать с датой?
Доброго времени суток. В JS очень мало что знаю, так, в общем представление, так что не судите строго. На школьном сайте попросили...

Календарь с датой отправления и прибытия
Помогите пожалуйста решить проблемку. Есть каледрадь, для ввода даты отправления и возврата. При вводе даты отправления (к примеру:...

функция яваскрипт для работы с датой!
Здраствуйте! У меня есть вот такая функция. Она делает так чтобы дата которую пользователь записывает в текстовое поле автоматически...

Как проверить, что некое выражение не является датой?
Как проверить, что некое выражение не является датой? Или наоборот, что выражение является датой? Спасибо!!!

Работа с датой и временем
ПОМОГИТЕ ИСПРАВИТЬ КОД JavaScript &lt;!--Задание: Сделайте так, чтобы часы показывали текущее время (чтобы часы &quot;ходили&quot;). ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru