2012-03-23 4 views
2

Итак, я знаю, что это, вероятно, FAQ, но я не могу его разгадать в голове.Дата и Javascript

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

Я знаю, как трудно конвертировать дни в Месяцы и Дни.

Для тех, кто учит математике, есть ли возможность определять каждый месяц в javascript и использовать его для подсчета, а затем следить за утверждением if, что если дата проходит, это то, сколько прошло дней. Мне нравится математика, но я не могу понять формулу, и это расстраивает меня.

22 сентября - день.

Я знаю, что на момент написания этой статьи есть 183 дня. Я также подсчитал дни проверки. Я могу получить формулу, чтобы показать мне это.

Но было бы это длинным изложением «если заявление», чтобы включить все месяцы, если я определял каждый месяц и количество дней в этом месяце? Или это может быть длинное выражение?

variable = weddingDate - (?) 

Мне это не нужно, если кто-то может просто помочь с какой-то алегброй! :)


Редактировать

var d1, d2; 

d1 = new Date('3/23/2012'); 
d2 = new Date('9/22/2012'); 

compare = d2-d1 

document.write((compare) /1000/60/60/24); 

Так что это возвращает точное количество дней. Это было намного проще, чем люди сделали это. Я знаю, что могу изменить d1, который будет автоматически обновляться в зависимости от даты ПК.

Но какова формула для точного преобразования от дней до нескольких месяцев и дней?

Я знаю, что вы могли бы взять

document.write((compare) /1000/60/60/24); 

И изменится

document.write(((compare) /1000/60/60/24)/30.4368499); 

Тогда я мог бы округляется до ближайшего целого числа, которое будет 6 (ака 6 месяцев), а затем вычесть, что из общей суммы, оставляя мне десятичную сумму. Тогда я мог бы это сделать на 30.4368499. Но я не был уверен, есть ли лучший способ сделать это.

+1

ПОЗДРАВЛЯЮ на женятся! :-) –

+1

'variable = weddingDate - Date.now()', который должен сделать трюк, если вы сделаете weddingDate объектом даты. Затем полученный объект можно манипулировать, чтобы найти дни, месяцы и время до этого. – jzworkman

+0

@jzworkman: 'Date.Now' должно быть' Date.now() '. –

ответ

5

Объект JavaScript Date может дать вам значение, которое представляет «расстояние» между датой и точкой в ​​прошлом, называемой «эпохой». Вычитая два таких значения, а затем разделив их на количество секунд в день, вы можете получить количество дней.

Посмотрите на метод .getTime(). (Просто вычитание одной даты из другой на самом деле работает, потому что JavaScript будет принуждать объекты к номерам и способ, которым объект Date становится числом, действительно вызывает .getTime().)

(Не написав код, потому что вы мудро попросили только процесс ,)

+0

Спасибо. Я все еще смущен переходом от дней до нескольких месяцев и дней. Как создается эта формула? – traveler84

+2

А, ну, это совсем другая история. На самом деле это довольно сложно, потому что в них есть несколько дней. Однако одна вещь, которую вы можете использовать, заключается в том, что объект JavaScript Date имеет метод '.setDate', который является« умным ». Если вы установите день месяца с этой функцией в течение дня после конца месяца (например, 32), он перейдет к следующему месяцу. Таким образом, вы можете написать цикл, который увеличивает день месяца и подсчитывает, сколько раз изменяется значение месяца! – Pointy

+0

Спасибо. Это имеет смысл. – traveler84

1
var END_TIME = new Date("2012-11-11").getTime(); // replace 2012-11-11 with actual weddding day 
if (new Date().getTime() > END_TIME) { 
    alert("WE MADE IT"); 
} 

Для получения дополнительной информации https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

+0

Хотя это работает, я пытаюсь сравнить две даты и опубликовать их на своем веб-сайте, чтобы мы могли войти, чтобы узнать, сколько осталось дней. Поэтому я пытаюсь конвертировать из нескольких дней в несколько месяцев и дней. – traveler84

0

// Месяцы tricky- если вы хотите недели и дни, вы бы сделать сейчас ...

// Я предполагаю, что на 22 месяца каждого месяца вы хотите вернуть количество месяцев и дней, и так далее.

function bigDay(d){ 
    var now= new Date(), 
    days1= now.getDate(), 
    months1= now.getMonth(), 
    days2= d.getDate(), 
    months2= d.getMonth(), 
    days= 0, months= months2-months1, 
    daysinmonth= (new Date(now.getFullYear(), now.getMonth()+1, 0)).getDate(); 
    if(d-now<0) return ''; 
    if(months> 0){ 
     if(days1>days2){ 
      days= (daysinmonth-days1)+days2; 
      --months; 
     } 
     else days= days2-days1; 
    } 
    else days= days2-days1; 
    return months+' months '+(days?' and '+days+' days.': ''); 
} 

оповещения (bigDay (новая дата (2012, 8, 22)))

// Вы можете использовать document.write или innerHTML или любой другой)

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