Кибор » Кибор - Интегрированная среда разработки ботов » Вопросы и решение проблем » Как сравнить даты?

Страниц (1): [1]
 

1. rora - 14 Ноября, 2022 - 12:47:49 - перейти к сообщению
Как взять дату от сюда(для просмотра ссылки Вам необходимо авторизоваться) и сравнить её
1) с 1.01.2023 и узнать сколько дней осталось до НГ?
2) Узнать сколько дней прошло после НГ ?
2. rora - 14 Ноября, 2022 - 16:30:17 - перейти к сообщению
Получилось так, но точность хромает из за количества дней в месяце.

вопрос как вытащить дату из(для просмотра ссылки Вам необходимо авторизоваться) ещё актуален.


CODE:

int hour=3600000/1000;
int day=hour*24;
int month=day*31;
int year=month*12;

int dayX = dateToSecond(15,12,2022);
int today = dateToSecond(15,11,2022);

int d1 = dayX;
int d2 = today;
int diff = (d1 - d2)/86400;

messagebox(diff);


function dateToSecond(int d, int m, int y)
{
return (day*d)+(month*m)+(year*y);
}
3. Zireael - 14 Ноября, 2022 - 19:36:06 - перейти к сообщению
 Цитата:
как вытащить дату из(для просмотра ссылки Вам необходимо авторизоваться)

CODE:
string S;
if(sendgetweb(#S, "Mozilla", "GET", "https:/^/tools.aimylogic.com", "api/now?tz=Europe/Moscow&format=dd/MM/yyyy")>0)
{
messagebox (S);
parserjson(json, S);

messagebox("formatted = " + json.formatted);
messagebox("day = " + json.day);
messagebox("month = " + json.month);
messagebox("year = " + json.year);
}
else messagebox("sendgetweb error");

 Цитата:
Как взять дату от сюда(для просмотра ссылки Вам необходимо авторизоваться) и сравнить её
1) с 1.01.2023 и узнать сколько дней осталось до НГ?

CODE:
external(INT, "gmtime", "gmtime", "msvcrt.dll");
external(INT, "_mkgmtime", "_mkgmtime", "msvcrt.dll");
external(INT, "GetTimeZoneInformation", "GetTimeZoneInformation", "Kernel32.dll");

string S;
if(sendgetweb(#S, "Mozilla", "GET", "https:/^/tools.aimylogic.com", "api/now?tz=Europe/Moscow&format=dd/MM/yyyy")>0)
{
parserjson(json, S);

char TZI[172];
string rn = "^r^n";
int timestamp = formatsn(json.timestamp) / 1000;
GetTimeZoneInformation(address(#TZI[0]));
int timezone = codhexi(#TZI[0], 4) * 60;
int new_year = formatsn(json.year) + 1 - 1900;
int tm2[9] = {0, 0, 0, 1, 0, new_year, 0, 0, 0};
int timestamp2 = _mkgmtime(address(#tm2[0]));
int timestamp3 = timestamp2 - timestamp + timezone;
if(timestamp3 > 0)
{
int t = gmtime(address(#timestamp3));
messagebox(
"До нового года осталось:"+rn+
"Месяцев: " + format(addressi(t+16))+rn+
"Дней: " + format(addressi(t+12) - 1)+rn+
"Часов: "+ format(addressi(t+8))+rn+
"Минут: " + format(addressi(t+4))+rn+
"Секунд: " + format(addressi(t+0))
);
}
else messagebox("timestamp3 < 0");
}
else messagebox("sendgetweb error");
4. rora - 15 Ноября, 2022 - 04:18:07 - перейти к сообщению
Спасибо за помощь, подскажите по этим строчкам, что они делают? Для получения второй даты? Как указать другую?

CODE:
int new_year = formatsn(json.year) + 1 - 1900; // 2022+1-1900 = 123 для чего нам оно?
int tm2[9] = {0, 0, 0, 1, 0, new_year, 0, 0, 0};//
int timestamp2 = _mkgmtime(address(#tm2[0]));//
5. Zireael - 15 Ноября, 2022 - 04:40:48 - перейти к сообщению
 Цитата:
int new_year = formatsn(json.year) + 1 - 1900; // год, начиная с 1900 года
int tm2[9] = {0, 0, 0, 1, 0, new_year, 0, 0, 0};// заполнение struct tm
int timestamp2 = _mkgmtime(address(#tm2[0]));// получить метку времени из структуры tm

CODE:
external(INT, "_mkgmtime", "_mkgmtime", "msvcrt.dll");

int tm[9] = {15, 8, 20, 2, 3, 123, 0, 0, 0}; // 2 апреля 2023 20:08:15
/* поля структуры
int tm_sec; // секунды
int tm_min; // минуты
int tm_hour; // часы
int tm_mday; // дни (1-31)
int tm_mon; // месяца (0-11)
int tm_year; // год, начиная с 1900, т. е. для 2023 будет 123
int tm_wday; // день недели (0 — 6)
int tm_yday; // дней в году
int tm_isdst; // флаг летнего времени
*/

int timestamp = _mkgmtime(address(#tm[0]));
messagebox(timestamp); // количество секунд прошедших с 1 января 1970 года

Powered by ExBB FM 1.0 Final