2012-07-04 1 views
1

Я могу получить текущую дату, но я не знаю, как получить текущую дату + 1 день (по Гринвичу)Получить текущий день + 1 в GMT

var now = new Date(); 
var newexp = (now + 3); 
var show = newexp.getGMTString(); 

alert(show); 

Что я на самом деле попытка сделать - установить cookie, срок действия которого истекает через 1 день.

function SetCookie(name, value, exp) { 
var now = new Date(); 
var newexp = (now + exp); // exp being # of days before expiration 
document.cookie= name + "=" + value+ "; expires=" + newexp.getGMTString() + ";" 
} 

SetCookie('name', 'john', '3'); 

Очевидно, что это не работает.

ответ

2
function SetCookie(name, value, exp) { 
var now = new Date(); 
now.setTime(now.getTime()+(exp*24*60*60*1000)); 
document.cookie= name + "=" + value+ "; expires=" + now.toGMTString() + ";" 
} 

SetCookie('name', 'john', '3'); 

отредактировали взять ехр как фактор, это нет. дней.

+0

Где этот фактор в 'exp'? (не работает для меня кстати) – JROB

+0

обновил код, чтобы принять во внимание №. дней, прошедших как exp. – Neo

+0

Это не настройка файла cookie :( – JROB

5

Объект Javascript Date позволяет вам манипулировать датой, в которой он хранит в нем очень легко.

Все, что вам нужно сделать, чтобы получить объект Date для завтра ...

var date = new Date(); 
date.setDate(date.getDate() + 1); 
+0

Что делать, если это уже последний день месяца? –

+0

Объект Date обрабатывает это для вас - посмотрите [здесь] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/setDate). – nitsua

+0

Я сделал, и документация для 'setDate' указана. Устанавливает день месяца (1-31) для указанной даты в соответствии с местным временем." - так что произойдет, если вы дадите 32? –

2

Другой способ думать о нем, чтобы вернуться к основным «миллисекунд с начала эпохи» представление:

var date = new Date() 
date.setTime(date.getTime() + 24 * 60 * 60 * 1000) 

Или с двумя отдельными переменными:

var now = new Date() 
var expiry = new Date(now.getTime() + 24 * 60 * 60 * 1000) 

Или встраивание его:

var expiry = new Date(new Date().getTime() + 24 * 60 * 60 * 1000) 

Заметь, что это даст вам дату 24 часов после этого. Это не то же время, что и «то же самое местное время завтра», которое может составлять 23 или 25 часов (или даже не существует, если это декабрь на Самоа в 2011 году). Лично я предпочитаю хороший стабильный подход «фиксированного времени», но YMMV.

Очевидно, чтобы срок истечения разного количества дней умножал постоянную 24 * 60 * 60 * 1000 (т.е. количество миллисекунд в день) на количество дней, которое вы хотите.

+0

Вы можете сделать новую дату (новая дата(). GetTime() + 24 * 60 * 60 * 1000) '. (Забыл закрытие parens ...) –

+0

@JaredFarrish: True. Я дам различные варианты по одному и тому же коду ... –

+1

Капля-код выигрывает шоу на уроках рыбной ловли. –

Смежные вопросы