Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS Как определить предыдущую дату? / 9 сообщений из 9, страница 1 из 1
04.01.2008, 11:16
    #35044764
nutt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Как определить предыдущую дату с учетом месяца, года?

Например
today = new Date()
day1 = today - 7

что дальше можно сделать, чтобы привести day1 к виду dd.mm.yyyy?
...
Рейтинг: 0 / 0
04.01.2008, 11:31
    #35044784
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Код: plaintext
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
var
   MonthDays=new Array();

   MonthDays[false]=new Array( 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 );
   MonthDays[true]=new Array( 31 , 29 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 );

function IsLeapYear(aYear)
{
    return(((aYear% 4 == 0 ) && (aYear% 100 != 0 )) || (aYear% 400 == 0 ));
}

function IncDay(aDate,aIncValue)
{
    if(!(aDate instanceof Date))
      return(NaN);

    if(arguments.length== 1 )
      aIncValue= 1 ;

    return(new Date(aDate.getTime()+ 1000 * 60 * 60 * 24 *aIncValue));
}

function IncMonth(aDate,aIncValue)
{
    var
      sign,
      leapyear,
      day,
      month,
      year;

    if(!(aDate instanceof Date))
      return(NaN);

    if(arguments.length== 1 )
      aIncValue= 1 ;

    day=aDate.getDate();
    month=aDate.getMonth();
    year=aDate.getFullYear();

    sign = aIncValue>= 0  ?  1  : - 1 ;
    year+=(aIncValue-aIncValue% 12 )/ 12 ;
    aIncValue%= 12 ;
    month+=aIncValue;
    if(month >  11  || month< 0 )
    {
       year+=sign;
       month+=- 12 *sign;
    }
    leapyear=IsLeapYear(year);
    if(day>MonthDays[leapyear][month])
      day=MonthDays[leapyear][month];

    return(new Date(year,month,day));
}

function IncYear(aDate,aIncValue)
{
    if(!(aDate instanceof Date))
      return(NaN);

    if(arguments.length== 1 )
      aIncValue= 1 ;

    return(IncMonth(aDate, 12 *aIncValue));
}
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.01.2008, 12:06
    #35044814
Анонiмъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Это хороший код, единственный его недостаток - в том, что он вообще написан.

Зачем городить свою собственную математику для работы с датами, когда всё это давно вшито в кишочки любого языка, начиная с C, включая сюда и JavaScript?
...
Рейтинг: 0 / 0
04.01.2008, 12:16
    #35044824
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Анонiмъ
Зачем городить свою собственную математику для работы с датами, когда всё это давно вшито в кишочки любого языка, начиная с C, включая сюда и JavaScript?

/me думает: гм... Действительно - зря напрягалсо :( Все ж, оказываецо, - ЭстЪ! Тока, тогда, будьте любезны, "...огласите, пожалуйста, весь список..." в JS'е...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.01.2008, 12:18
    #35044826
Анонiмъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Ну в общем, даты - это те же числа, их можно складывать и вычитать. Подробнее надо читать мануал по JScript:

var d=new Date();
var d1=new Date(d.getTime()-24*60*60*1000);
WScript.Echo(d);
WScript.Echo(d1);

А вот как привести объект даты в строку - это... опять читаем мануал. Простейший вариант:

WScript.Echo((1+d1.getDate())+'.'+(1+d.getMonth())+'.'+d.getYear());

Ну а уж увеличить на месяц/год - вообще мудрить не надо. Разбираем на части, ин/декрементируем их и собираем назад стандартным конструктором.

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

И так далее...
...
Рейтинг: 0 / 0
04.01.2008, 12:35
    #35044842
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Вы, как-то сами себе противоречите:
Анонiмъ
Зачем городить свою собственную математику

и, в то же время:
Анонiмъ
даты - это те же числа, их можно складывать и вычитать.

Анонiмъ
Ну а уж увеличить на месяц/год - вообще мудрить не надо. Разбираем на части, ин/декрементируем их и собираем назад стандартным конструктором.

Раз так все просто - не вопрос: вычтите один год от 29.02.2008
Анонiмъ
Получить последний день месяца чуть сложнее

Тоже - не вопрос... Только уж в следующий раз выражайтесь, пожалуйста, четко, ясно и однозначно, а то я из Вашего
Анонiмъ
всё это давно вшито в кишочки любого языка

сделал вывод, о наличии уже встроенных, но, к сожалению, неизвестных мне стандартных функций языка... А оно вишЪ как оказалось: те же яйца (математика) - только в профиль...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
04.01.2008, 14:09
    #35044965
IDVsbruck
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Ex_Soft, не буянь, человек прав ... надо пользоваться преимуществами, которые дает нам язык, а не делать из каждого поставленного вопроса собственную теорию.
...
Рейтинг: 0 / 0
04.01.2008, 14:49
    #35045029
Ex_Soft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
Ну нЭт у JS'овского Date встроенного функционала, выполняющего хотелку топикстартера.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
07.01.2008, 12:56
    #35046949
I_Work
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JS Как определить предыдущую дату?
IDVsbruckEx_Soft, не буянь, человек прав ... надо пользоваться преимуществами, которые дает нам язык, а не делать из каждого поставленного вопроса собственную теорию.
Не могу с вами согласиться. Ex_Soft предложил очень даже хороший вариант решения поставленной задачи. Если есть какие-то другие пути, прошу выкладывать - мне решение этой задачи тоже интересно...

АнонiмъНу в общем, даты - это те же числа, их можно складывать и вычитать. Подробнее надо читать мануал по JScript:

var d=new Date();
var d1=new Date(d.getTime()-24*60*60*1000);
WScript.Echo(d);
WScript.Echo(d1);

А вот как привести объект даты в строку - это... опять читаем мануал. Простейший вариант:

WScript.Echo((1+d1.getDate())+'.'+(1+d.getMonth())+'.'+d.getYear());

Ну а уж увеличить на месяц/год - вообще мудрить не надо. Разбираем на части, ин/декрементируем их и собираем назад стандартным конструктором.

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

И так далее...
Даже не глубоко вдаваясь в правильность такого подхода (хороший пример насчет высокосных годов привел Ex_Soft), попробуйте написать код, а не слова. Полагаю, он получится гораздо более громоздкий.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS Как определить предыдущую дату? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]