Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Javascript установить cookie до заданного числа (https://javascript.ru/forum/misc/20722-javascript-ustanovit-cookie-do-zadannogo-chisla.html)

Zhazhah 15.08.2011 11:45

Javascript установить cookie до заданного числа
 
Здравствуйте, не могу разобраться, каким образом можно установить жизнь Cookie например до 00:00, т.е когда бы cookie небыли созданы они должны удаляться в 00:00

devote 15.08.2011 12:29

узнвешь текущее время, определяешь сколько осталось до 0 часов, потом при установке кук задаешь значение времени жизни, текущее время + остаток до 0 часов

Magneto 15.08.2011 12:51

Цитата:

Сообщение от devote (Сообщение 120622)
узнвешь текущее время, определяешь сколько осталось до 0 часов, потом при установке кук задаешь значение времени жизни, текущее время + остаток до 0 часов

Сам хоть понял что сказал?

devote 15.08.2011 13:21

Цитата:

Сообщение от Magneto
Сам хоть понял что сказал?

сойдет)

Zhazhah 15.08.2011 14:03

Цитата:

узнвешь текущее время, определяешь сколько осталось до 0 часов, потом при установке кук задаешь значение времени жизни, текущее время + остаток до 0 часов
Спасиб))
var d = new Date();
var date = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59,59);

сделал так, только вывод Mon Aug 15 2011 23:59:59 GMT+0400 (MSD)
в cookie записывается дата смерти cookie 16 2011 3:59:59
как можно это исправить?

Magneto 15.08.2011 14:39

Цитата:

Сообщение от Zhazhah (Сообщение 120656)
Спасиб))

Там незачто говорить спасибо, так как человек не понимает как живут куки.

Вот скрипт который тебе нужен:
// Получаем текущуее время
var now = new Date();

  //  Устанавливаем дату сегодня в полночь 
var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 0);

  // Записываем в переменную время жизни куки
  // В переменной будет находиться время (в миллисекундах) которое нужно установить кукам чтоб они умерли
  // сегодня в полночь
var cookiesLife = midnight.getTime() - now.getTime();

B@rmaley.e><e 15.08.2011 15:46

Цитата:

Сообщение от Magneto
Там незачто говорить спасибо, так как человек не понимает как живут куки.

А Вы понимаете?

Cookie:
Цитата:

Expiry date

Each cookie has an expiry date after which it is trashed. If you don't specify the expiry date the cookie is trashed when you close the browser. This expiry date should be in UTC (Greenwich) time.

Zhazhah 15.08.2011 15:51

Цитата:

Вот скрипт который тебе нужен:
Мне в Cookie необходимо удалять каждый день в 00:00 т.е мне достаточно этого
var now = new Date();
var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 0);

только чтобы GMT+0300 (MSK) а не GMT+0400 (MSD)

а ваш код возвращает Thu Jan 01 1970 11:20:36 GMT+0300 (MSK)

devote 15.08.2011 16:11

Цитата:

Сообщение от Magneto
Там незачто говорить спасибо, так как человек не понимает как живут куки.

Будь уверенным перед тем как говорить это.

Magneto 15.08.2011 16:14

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 120674)
А Вы понимаете?

Я не говорю по-английски, и в даном случае ссылки Ваши имеют вес только для Вас.

Если есть желание подискутировать, давайте, только на Русском.

Насчет куков: кукам нужно устанавливать время, не то когда они должны умереть, а то сколько они должны прожить (в секундах). И я сейчас говорю о свойстве max-age.

document.cookie = 'key=value; max-age=(время в секундах)';

devote 15.08.2011 16:27

Цитата:

Сообщение от B@rmaley.e><e
А Вы понимаете?

Ну человек по умничать захотел, вот и кричит здесь что мол все не правы а он прав. Я написал так как есть, без подробностей...

а для особенных таких как Magneto могу пояснить:

Цитата:

узнвешь текущее время
Берешь текущее время, например 15-08-2011 16:14:00 это грубо
Цитата:

определяешь сколько осталось до 0 часов
до 0 часов осталось 7 часов 46 минут, как вычислять оставшееся время не буду. Это каждый школьник знает.
Цитата:

потом при установке кук задаешь значение времени жизни, текущее время + остаток до 0 часов
тоесть к этому "15-08-2011 16:14:00" прибавляешь наш остаток "07:46" получаем: 16-08-2011 00:00:00 вот ее и ставим в куку. Ну конечно же там есть еще GMT но это вообще не проблема.

Цитата:

Сообщение от Magneto
а то сколько они должны прожить (в секундах). И я сейчас говорю о свойстве max-age.

ахахаха, ты хоть знаешь как реально выглядят куки в заголовках? Какие нахер секунды, нужно указывать полную дату включая день, месяц, год, часы, минуты, секунды.. И хрень не неси, читай спецификацию для начала, потом высказывай о том кто что знает.

Magneto, и не надо говорить что я ни*уя не знаю. Поболее твоего знаю.

Magneto 15.08.2011 16:43

devote,
Тогда ты можешь смело подойти к Дэвиду Флэнагану и плюнуть ему в лицо. Так я опираюсь на его книгу «JavaScrip. Подробное руководство»

devote 15.08.2011 16:47

Цитата:

Сообщение от Magneto
devote,
Тогда ты можешь смело подойти к Дэвиду Флэнагану и плюнуть ему в лицо. Так я опираюсь на его книгу «JavaScrip. Подробное руководство»

Да никто его не винит, я говорю то что реально происходит в заголовках.. Если в яваскрипте есть доп фича, то это лишь в яваскрипте, ибо стандарт везде один. Любой язык программирования заставляет соблюдать стандарты. А доп фичи рассматривать как реальность нельзя, нужно в первую очередь читать спецификации по нужному материалу. А потом читать Дэвида Флэнагана, я уверен что он не глуп и что-то имел другое ввиду, а ты видимо не зная специфики понял это по своему.

Zhazhah 16.08.2011 09:59

Спасиб)
var now=new Date();
var age=(new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59)-now.getTime())/1000;
d.cookie="rat=true; path=/; max-age="+age;

devote 16.08.2011 10:08

Цитата:

Сообщение от Zhazhah
d.cookie="rat=true; path=/; max-age="+age;

IE6-8 не поддерживают значение в куках такое как "max-age".

devote 16.08.2011 10:11

вот тест этих значений в ИЕ max-age не убивает куку. Он понятия не имеет про это значение.

Magneto 17.08.2011 03:43

Цитата:

Сообщение от devote
Если в яваскрипте есть доп фича, то это лишь в яваскрипте

Я тебе по-секрету скажу что в JavaScripte нету никаких дополнительных фич, он не умеет работать с протоколом HTTP и, О Боже! в нем нет поддержки DOM .

И еще max-age это не дополнительная фича это часть спецификации HTTP 1.1, так что иди читай спецификации.

Цитата:

Сообщение от devote
Любой язык программирования заставляет соблюдать стандарты.

О каких стандартах идет речь?

x-yuri 17.08.2011 07:54

ну давайте поднимем стандарты, чтобы было о чем поговорить...

Magneto 17.08.2011 09:06

Это что ли?


Часовой пояс GMT +3, время: 16:55.