Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.11.2010, 21:11
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Сообщение от DooMer Посмотреть сообщение
рони,
Без обид, но выкинь свой говнокод
за 10 мин наваял
Таки не точно получается)
var day = 5;
var month = 11;
var year = 2010;
var now = new Date().getTime();
var birsday = Date.UTC(year,month-1,day);
var result = new Date();  
result.setTime(now-birsday);
alert([result.getFullYear()-1970,result.getMonth(),result.getDay()])

Последний раз редактировалось Aetae, 06.11.2010 в 00:54. Причина: hide
Ответить с цитированием
  #12 (permalink)  
Старый 05.11.2010, 21:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

DooMer,
Стёр свой код но решил вернуть -- проверяй что мой выдаёт и твой )))
function passed(e, b, a) {
    function g(f, j, k, l) {
        return f + (f % 10 == 1 && f % 100 != 11 ? j : f % 10 >= 2 && f % 10 <= 4 && (f % 100 < 10 || f % 100 >= 20) ? k : l)
    }
    var c = e;
    a = "" + b + "/" + e + "/" + a + "";
    a = new Date(a);
    a.setHours(0, 0, 0, 0);
    b = new Date;
    b.setHours(0, 0, 0, 0);
    var d = a;
    if (b.getTime() < a.getTime()) {
        a = b;
        b = d;
        d = a;
        c = a.getDate()
    }
    for (e = -1; b.getTime() >= d.getTime();) {
        a = new Date(d);
        e++;
        var h = (new Date(d.getFullYear(), d.getMonth() + 2, 0)).getDate(),
            i = c;
        if (h < c) i = h;
        d.setMonth(d.getMonth() + 1, i)
    }
    c = b.getTime() - a.getTime();
    c = (c - c % 864E5) / 864E5;
    c = c > 0 ? g(c, " \u0434\u0435\u043d\u044c ", " \u0434\u043d\u044f ", " \u0434\u043d\u0435\u0439 ") : "";
    a = (e - e % 12) / 12;
    a = a > 0 ? g(a, " \u0433\u043e\u0434 ", " \u0433\u043e\u0434\u0430 ", " \u043b\u0435\u0442 ") : "";
    b = e % 12;
    b = b > 0 ? g(b, " \u043c\u0435\u0441\u044f\u0446 ", " \u043c\u0435\u0441\u044f\u0446\u0430 ", " \u043c\u0435\u0441\u044f\u0446\u0435\u0432 ") : "";
    return a + b + c || "0 \u0434\u043d\u0435\u0439"
};
alert(passed('5','11','2010')+' :) ');
alert("до нового года "+passed('31','12',(new Date()).getFullYear())+' :) ');

Последний раз редактировалось рони, 05.11.2010 в 21:31.
Ответить с цитированием
  #13 (permalink)  
Старый 05.11.2010, 22:08
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Рано радуешься рони, дело в опечатке))
result.getDay() >> result.getDate()
getDay это таки день недели.)
var day = 5;
var month = 11;
var year = 2010;
var now = new Date().getTime();
var birsday = Date.UTC(year,month-1,day);
var result = new Date();  
result.setTime(now-birsday);
alert([result.getFullYear()-1970,result.getMonth(),result.getDate()])


Подведя итоги:
function passed(y,m,d){
  var r=new Date(new Date().getTime()-Date.UTC(y,m-1,d));
  return [r.getFullYear()-1970,r.getMonth(),r.getDate()-1]
}
alert(passed(2010,11,5))
alert(passed(1990,8,24))

Последний раз редактировалось Aetae, 05.11.2010 в 22:31.
Ответить с цитированием
  #14 (permalink)  
Старый 05.11.2010, 22:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Aetae,
отмотаем два месяца назад ровно ))) и сравним
function passed(y,m,d){
  var r=new Date(new Date().getTime()-Date.UTC(y,m-1,d));
  return [r.getFullYear()-1970,r.getMonth(),r.getDate()-1]
}
alert(passed(2010,9,5))
Ответить с цитированием
  #15 (permalink)  
Старый 05.11.2010, 23:05
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Лол, интересно почему?))
Ответить с цитированием
  #16 (permalink)  
Старый 05.11.2010, 23:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Aetae,
Попытка прояснить )))
сентябрь 30 дней -5 = 25 дней
октябрь 31 день
из ноября 5 дней
итого 61 день
сравнение по скрипту с январём 31день и февралём 28 дней итого 59 дней
61 - 59 = 2 дня
итого скрипт выдал 2 месяца 2 дня
Ответить с цитированием
  #17 (permalink)  
Старый 06.11.2010, 00:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Тоды примерно так, должно быть дубово)):
function passed(d,m,y){
var t=new Date();
return [t.setDate(t.getDate()-d+1)&&(t.getDate()-1),t.setMonth(t.getMonth()-m+1)&&t.getMonth(),t.getFullYear()-y]
}
alert(passed(5,11,2010));
alert(passed(5,9,2010));
alert(passed(24,8,1990));


Хотя не факт, терзают меня некие сомнения)

Последний раз редактировалось Aetae, 06.11.2010 в 00:33.
Ответить с цитированием
  #18 (permalink)  
Старый 06.11.2010, 03:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Aetae,
Пара житейских примеров два человека взяли кредит на месяц один 30 октября другой 31 для обоих месяц закончиться 30 ноября, человек родился в високосный год 29 февраля следующие 3 года он будет праздновать день рождения 28 февраля )))
Ответить с цитированием
  #19 (permalink)  
Старый 06.11.2010, 04:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Aetae,
В догонку )))
Предположим сегодня 28 февраля 2010 года и мы хотим узнать сколько прошло с 28 декабря и 31 декабря по эту дату...посмотрим что получиться )))
function passed(d,m,y){
var t=new Date(2010,1,28);
return [(new Date(y,m-1,d)).toLocaleDateString(),t.toLocaleDateString(),t.setDate(t.getDate()-d+1)&&(t.getDate()-1),t.setMonth(t.getMonth()-m+1)&&t.getMonth(),t.getFullYear()-y]
}
alert(passed(28,12,2009)+'\n'+passed(31,12,2009));

c 28 прошло 2 месяца а через три дня позднее вроде и срок должен меньше быть а насчитало 2 месяца с хвостиком

Последний раз редактировалось рони, 06.11.2010 в 04:39.
Ответить с цитированием
  #20 (permalink)  
Старый 06.11.2010, 09:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,227

Сообщение от рони
два человека взяли кредит
У банков месяц - 30 дней, на сколько я вкурсе...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
расчет возраста nameivan Общие вопросы Javascript 13 30.05.2014 17:19
Калькулятор с выбором детали и расчет ее цены по введеным пораметрам Aquarius AJAX и COMET 16 31.03.2010 10:35
расчет стоимости annik Элементы интерфейса 2 02.12.2009 21:56
Расчет позиции с учетом скролла cker Элементы интерфейса 2 10.05.2009 18:49