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

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

что дальше можно сделать, чтобы привести day1 к виду dd.mm.yyyy?
...
Рейтинг: 0 / 0
JS Как определить предыдущую дату?
    #35044784
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
JS Как определить предыдущую дату?
    #35044814
Анонiмъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это хороший код, единственный его недостаток - в том, что он вообще написан.

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

/me думает: гм... Действительно - зря напрягалсо :( Все ж, оказываецо, - ЭстЪ! Тока, тогда, будьте любезны, "...огласите, пожалуйста, весь список..." в JS'е...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
JS Как определить предыдущую дату?
    #35044826
Анон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)

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

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

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

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

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

сделал вывод, о наличии уже встроенных, но, к сожалению, неизвестных мне стандартных функций языка... А оно вишЪ как оказалось: те же яйца (математика) - только в профиль...
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
JS Как определить предыдущую дату?
    #35044965
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft, не буянь, человек прав ... надо пользоваться преимуществами, которые дает нам язык, а не делать из каждого поставленного вопроса собственную теорию.
...
Рейтинг: 0 / 0
JS Как определить предыдущую дату?
    #35045029
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну нЭт у JS'овского Date встроенного функционала, выполняющего хотелку топикстартера.
_________________
"Helo, word!" - 17 errors 56 warnings
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
JS Как определить предыдущую дату?
    #35046949
I_Work
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
9 сообщений из 9, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / JS Как определить предыдущую дату?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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